diff --git a/filefield.module b/filefield.module
index 4334c4b..5f2d6a7 100644
--- a/filefield.module
+++ b/filefield.module
@@ -548,13 +548,13 @@ function filefield_filefield_icon_sets() {
 }
 
 /**
- * Access callback for the JavaScript upload and deletion AHAH callbacks.
+ * Access callback for AHAH upload/delete and node form validation.
  *
  * The content_permissions module provides nice fine-grained permissions for
  * us to check, so we can make sure that the user may actually edit the file.
  */
-function filefield_edit_access($type_name, $field_name) {
-  if (!content_access('edit', content_fields($field_name, $type_name))) {
+function filefield_edit_access($type_name, $field_name, $node = NULL) {
+  if (!content_access('edit', content_fields($field_name, $type_name), NULL, $node)) {
     return FALSE;
   }
   // No content permissions to check, so let's fall back to a more general permission.
diff --git a/filefield_widget.inc b/filefield_widget.inc
index 4b3536f..03fc7fb 100644
--- a/filefield_widget.inc
+++ b/filefield_widget.inc
@@ -558,8 +558,7 @@ function filefield_node_form_validate($form, &$form_state) {
         $total_filesize += (int)$item['filesize'];
       }
     }
-
-    if (!$valid && $field['required'] && filefield_edit_access($field['type_name'], $field_name)) {
+    if (!$valid && $field['required'] && filefield_edit_access($field['type_name'], $field_name, $form['#node'])) {
       form_set_error($field_name, t('%title field is required.', array('%title' => $field['widget']['label'])));
     }
     $max_filesize = parse_size($field['widget']['max_filesize_per_node']);
