iliaa Wed Nov 10 19:38:06 2004 EDT
Modified files:
/php-src/main rfc1867.c
Log:
Fixed bug #30750 (Meaningful error message when upload directory is not
accessible).
http://cvs.php.net/diff.php/php-src/main/rfc1867.c?r1=1.163&r2=1.164&ty=u
Index: php-src/main/rfc1867.c
diff -u php-src/main/rfc1867.c:1.163 php-src/main/rfc1867.c:1.164
--- php-src/main/rfc1867.c:1.163 Mon Sep 13 12:00:23 2004
+++ php-src/main/rfc1867.c Wed Nov 10 19:38:04 2004
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: rfc1867.c,v 1.163 2004/09/13 16:00:23 sesser Exp $ */
+/* $Id: rfc1867.c,v 1.164 2004/11/11 00:38:04 iliaa Exp $ */
/*
* This product includes software developed by the Apache Group
@@ -130,6 +130,7 @@
#define UPLOAD_ERROR_B 2 /* Uploaded file exceeded MAX_FILE_SIZE */
#define UPLOAD_ERROR_C 3 /* Partially uploaded */
#define UPLOAD_ERROR_D 4 /* No file uploaded */
+#define UPLOAD_ERROR_E 6 /* Missing /tmp or similar directory */
void php_rfc1867_register_constants(TSRMLS_D)
{
@@ -138,6 +139,7 @@
REGISTER_MAIN_LONG_CONSTANT("UPLOAD_ERR_FORM_SIZE", UPLOAD_ERROR_B,
CONST_CS | CONST_PERSISTENT);
REGISTER_MAIN_LONG_CONSTANT("UPLOAD_ERR_PARTIAL", UPLOAD_ERROR_C,
CONST_CS | CONST_PERSISTENT);
REGISTER_MAIN_LONG_CONSTANT("UPLOAD_ERR_NO_FILE", UPLOAD_ERROR_D,
CONST_CS | CONST_PERSISTENT);
+ REGISTER_MAIN_LONG_CONSTANT("UPLOAD_ERR_NO_TMP_DIR", UPLOAD_ERROR_E,
CONST_CS | CONST_PERSISTENT);
}
static void normalize_protected_variable(char *varname TSRMLS_DC)
@@ -963,12 +965,14 @@
}
}
+ total_bytes = cancel_upload = 0;
+
if (!skip_upload) {
/* Handle file */
fp =
php_open_temporary_file(PG(upload_tmp_dir), "php", &temp_filename TSRMLS_CC);
if (!fp) {
sapi_module.sapi_error(E_WARNING, "File
upload error - unable to create a temporary file");
- skip_upload = 1;
+ cancel_upload = UPLOAD_ERROR_E;
}
}
if (skip_upload) {
@@ -977,9 +981,6 @@
continue;
}
- total_bytes = 0;
- cancel_upload = 0;
-
if(strlen(filename) == 0) {
#if DEBUG_FILE_UPLOAD
sapi_module.sapi_error(E_NOTICE, "No file
uploaded");
@@ -1011,11 +1012,13 @@
total_bytes += wlen;
}
}
- }
- fclose(fp);
+ }
+ if (fp) { /* may not be initialized if file could not
be created */
+ fclose(fp);
+ }
#if DEBUG_FILE_UPLOAD
- if(strlen(filename) > 0 && total_bytes == 0) {
+ if(strlen(filename) > 0 && total_bytes == 0 &&
!cancel_upload) {
sapi_module.sapi_error(E_WARNING, "Uploaded
file size 0 - file [%s=%s] not saved", param, filename);
cancel_upload = 5;
}
@@ -1023,7 +1026,9 @@
if (cancel_upload) {
if (temp_filename) {
- unlink(temp_filename);
+ if (cancel_upload != UPLOAD_ERROR_E) {
/* file creation failed */
+ unlink(temp_filename);
+ }
efree(temp_filename);
}
temp_filename="";
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php