? file_30520.patch
? file_30520_0.patch
? files
? sites/default/settings.php
? sites/default/themes
Index: includes/file.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/file.inc,v
retrieving revision 1.104
diff -u -p -r1.104 file.inc
--- includes/file.inc	25 Jul 2007 17:41:27 -0000	1.104
+++ includes/file.inc	6 Sep 2007 00:34:23 -0000
@@ -491,17 +491,17 @@ function file_save_upload($source, $vali
   }
 
   // If a file was uploaded, process it.
-  if (isset($_FILES['files']) && $_FILES['files']['name'][$source] && is_uploaded_file($_FILES['files']['tmp_name'][$source])) {
-    // Check for file upload errors and return FALSE if a
-    // lower level system error occurred.
+  if (isset($_FILES['files']) && $_FILES['files']['name'][$source]) {
+    // Check for file upload errors and return FALSE if a lower level system
+    // error occurred.
     switch ($_FILES['files']['error'][$source]) {
       // @see http://php.net/manual/en/features.file-upload.errors.php
-      case UPLOAD_ERR_OK:
-        break;
-
       case UPLOAD_ERR_INI_SIZE:
+        drupal_set_message(t("The file %file could not be saved, because it exceeds %maxsize, PHP's maximum allowed size for uploads.", array('%file' => $source, '%maxsize' => format_size(parse_size(ini_get('upload_max_filesize'))))), 'error');
+        return 0;
+
       case UPLOAD_ERR_FORM_SIZE:
-        drupal_set_message(t('The file %file could not be saved, because it exceeds %maxsize, the maximum allowed size for uploads.', array('%file' => $source, '%maxsize' => format_size(file_upload_max_size()))), 'error');
+        drupal_set_message(t("The file %file could not be saved, because it exceeds the maximum allowed size for uploads for this form.", array('%file' => $source)), 'error');
         return 0;
 
       case UPLOAD_ERR_PARTIAL:
@@ -509,7 +509,14 @@ function file_save_upload($source, $vali
         drupal_set_message(t('The file %file could not be saved, because the upload did not complete.', array('%file' => $source)), 'error');
         return 0;
 
-        // Unknown error
+      case UPLOAD_ERR_OK:
+        // Final check that this is a valid upload, if it isn't, use the
+        // default error handler.
+        if (is_uploaded_file($_FILES['files']['tmp_name'][$source])) {
+          break;
+        }
+
+      // Unknown error.
       default:
         drupal_set_message(t('The file %file could not be saved. An unknown error has occurred.', array('%file' => $source)), 'error');
         return 0;
