=== modified file 'includes/form.inc'
--- includes/form.inc	2009-01-28 07:43:26 +0000
+++ includes/form.inc	2009-02-01 01:01:38 +0000
@@ -1838,22 +1838,30 @@ function form_process_radios($element) {
  */
 function form_process_input_format($element) {
   if (isset($element['#text_format'])) {
-    // Determine the form element parents and element name to use for the input
-    // format widget. This simulates the 'element' and 'element_format' pair of
-    // parents that filter_form() expects.
-    $element_parents = $element['#parents'];
-    $element_name = array_pop($element_parents);
-    $element_parents[] = $element_name . '_format';
-
-    // We need to break references, otherwise form_builder recurses infinitely.
-    $element['value'] = (array)$element;
-    $element['#type'] = 'markup';
-    $element['format'] = filter_form($element['#text_format'], 1, $element_parents);
-
-    // We need to clear the #text_format from the new child otherwise we
-    // would get into an infinite loop.
-    unset($element['value']['#text_format']);
-    $element['value']['#weight'] = 0;
+    if (filter_access($element['#text_format'])) {
+      // Determine the form element parents and element name to use for the input
+      // format widget. This simulates the 'element' and 'element_format' pair of
+      // parents that filter_form() expects.
+      $element_parents = $element['#parents'];
+      $element_name = array_pop($element_parents);
+      $element_parents[] = $element_name . '_format';
+
+      // We need to break references, otherwise form_builder recurses infinitely.
+      $element['value'] = (array)$element;
+      $element['#type'] = 'markup';
+      $element['format'] = filter_form($element['#text_format'], 1, $element_parents);
+
+      // We need to clear the #text_format from the new child otherwise we
+      // would get into an infinite loop.
+      unset($element['value']['#text_format']);
+      $element['value']['#weight'] = 0;
+    }
+    else {
+      $element['#type'] = 'markup';
+      // We use #default_value to make sure this can not get overridden.
+      $element['#value'] = $element['#default_value'];
+      $element['#markup'] = check_markup($element['#value'], $element['#text_format']);
+    }
   }
   return $element;
 }

=== modified file 'modules/node/node.module'
--- modules/node/node.module	2009-01-28 07:34:30 +0000
+++ modules/node/node.module	2009-02-01 01:02:24 +0000
@@ -1878,7 +1878,7 @@ function node_feed($nids = FALSE, $chann
         $item->body = $content;
         unset($item->teaser);
       }
-    
+
       // Allow modules to modify the fully-built node.
       node_invoke_nodeapi($item, 'alter', $teaser, FALSE);
     }
@@ -2232,11 +2232,6 @@ function node_access($op, $node, $accoun
   if (empty($account)) {
     $account = $user;
   }
-  // If the node is in a restricted format, disallow editing.
-  if ($op == 'update' && !filter_access($node->format)) {
-    return FALSE;
-  }
-
   if (user_access('bypass node access', $account)) {
     return TRUE;
   }

