Index: includes/theme.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/theme.inc,v
retrieving revision 1.460
diff -u -r1.460 theme.inc
--- includes/theme.inc	4 Jan 2009 16:19:39 -0000	1.460
+++ includes/theme.inc	9 Jan 2009 09:04:22 -0000
@@ -1113,18 +1113,20 @@
 function theme_status_messages($display = NULL) {
   $output = '';
   foreach (drupal_get_messages($display) as $type => $messages) {
-    $output .= "<div class=\"messages $type\">\n";
-    if (count($messages) > 1) {
-      $output .= " <ul>\n";
-      foreach ($messages as $message) {
-        $output .= '  <li>' . $message . "</li>\n";
+    if (($type != 'error') || (($type == 'error') && user_access('view error messages'))) {
+      $output .= "<div class=\"messages $type\">\n";
+      if (count($messages) > 1) {
+        $output .= " <ul>\n";
+        foreach ($messages as $message) {
+          $output .= '  <li>' . $message . "</li>\n";
+        }
+        $output .= " </ul>\n";
       }
-      $output .= " </ul>\n";
-    }
-    else {
-      $output .= $messages[0];
+      else {
+        $output .= $messages[0];
+      }
+      $output .= "</div>\n";
     }
-    $output .= "</div>\n";
   }
   return $output;
 }
@@ -1984,17 +1986,17 @@
   $variables['node_url']  = url('node/' . $node->nid);
   $variables['title']     = check_plain($node->title);
   $variables['page']      = (bool)menu_get_object();
-  
+
   if ($node->build_mode == NODE_BUILD_PREVIEW) {
     unset($node->content['links']);
   }
-  
+
   // Render taxonomy links separately.
   $variables['terms']     = !empty($node->content['links']['terms']) ? drupal_render($node->content['links']['terms']) : '';
-  
+
   // Render all remaining node links.
   $variables['links']     = !empty($node->content['links']) ? drupal_render($node->content['links']) : '';
-  
+
   // Render any comments.
   $variables['comments']  = !empty($node->content['comments']) ? drupal_render($node->content['comments']) : '';
 
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.656
diff -u -r1.656 system.module
--- modules/system/system.module	5 Jan 2009 02:52:43 -0000	1.656
+++ modules/system/system.module	9 Jan 2009 09:04:23 -0000
@@ -205,6 +205,10 @@
       'title' => t('Block IP addresses'),
       'description' => t('Block IP addresses from accessing your site.'),
     ),
+    'view error messages' => array(
+      'title' => t('View error messages'),
+      'description' => t('View error messages reported by modules.'),
+    ),
   );
 }
 
