sesser Mon Jan 6 18:51:28 2003 EDT
Modified files:
/php4/main rfc1867.c
Log:
Adding support for anonymous fileuploads (#21450)
Index: php4/main/rfc1867.c
diff -u php4/main/rfc1867.c:1.130 php4/main/rfc1867.c:1.131
--- php4/main/rfc1867.c:1.130 Tue Dec 31 10:58:54 2002
+++ php4/main/rfc1867.c Mon Jan 6 18:51:28 2003
@@ -16,7 +16,7 @@
| Jani Taskinen <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: rfc1867.c,v 1.130 2002/12/31 15:58:54 sebastian Exp $ */
+/* $Id: rfc1867.c,v 1.131 2003/01/06 23:51:28 sesser Exp $ */
/*
* This product includes software developed by the Apache Group
@@ -54,6 +54,9 @@
/* The longest property name we use in an uploaded file array */
#define MAX_SIZE_OF_INDEX sizeof("[tmp_name]")
+/* The longest anonymous name */
+#define MAX_SIZE_ANONNAME 33
+
/* Errors */
#define UPLOAD_ERROR_OK 0 /* File upload succesful */
#define UPLOAD_ERROR_A 1 /* Uploaded file exceeded upload_max_filesize */
@@ -686,7 +689,7 @@
{
char *boundary, *s=NULL, *boundary_end = NULL, *start_arr=NULL,
*array_index=NULL;
char *temp_filename=NULL, *lbuf=NULL, *abuf=NULL;
- int boundary_len=0, total_bytes=0, cancel_upload=0, is_arr_upload=0,
array_len=0, max_file_size=0, skip_upload=0;
+ int boundary_len=0, total_bytes=0, cancel_upload=0, is_arr_upload=0,
+array_len=0, max_file_size=0, skip_upload=0, anonindex=0, is_anonymous;
zval *http_post_files=NULL;
zend_bool magic_quotes_gpc;
multipart_buffer *mbuff;
@@ -817,13 +820,18 @@
}
/* Return with an error if the posted data is garbled */
- if (!param) {
+ if (!param && !filename) {
sapi_module.sapi_error(E_WARNING, "File Upload Mime
headers garbled");
- if (filename) {
- efree(filename);
- }
SAFE_RETURN;
}
+
+ if (!param) {
+ is_anonymous = 1;
+ param = emalloc(MAX_SIZE_ANONNAME);
+ snprintf(param, MAX_SIZE_ANONNAME, "%u", anonindex++);
+ } else {
+ is_anonymous = 0;
+ }
if (!skip_upload) {
/* Handle file */
@@ -928,10 +936,12 @@
#else
s = strrchr(filename, '\\');
#endif
- if (s && s > filename) {
- safe_php_register_variable(lbuf, s+1, NULL, 0
TSRMLS_CC);
- } else {
- safe_php_register_variable(lbuf, filename, NULL, 0
TSRMLS_CC);
+ if (!is_anonymous) {
+ if (s && s > filename) {
+ safe_php_register_variable(lbuf, s+1, NULL, 0
+TSRMLS_CC);
+ } else {
+ safe_php_register_variable(lbuf, filename,
+NULL, 0 TSRMLS_CC);
+ }
}
/* Add $foo[name] */
@@ -965,7 +975,9 @@
} else {
sprintf(lbuf, "%s_type", param);
}
- safe_php_register_variable(lbuf, cd, NULL, 0 TSRMLS_CC);
+ if (!is_anonymous) {
+ safe_php_register_variable(lbuf, cd, NULL, 0
+TSRMLS_CC);
+ }
/* Add $foo[type] */
if (is_arr_upload) {
@@ -987,7 +999,9 @@
magic_quotes_gpc = PG(magic_quotes_gpc);
PG(magic_quotes_gpc) = 0;
/* if param is of form xxx[.*] this will cut it to xxx */
- safe_php_register_variable(param, temp_filename, NULL, 1
TSRMLS_CC);
+ if (!is_anonymous) {
+ safe_php_register_variable(param, temp_filename, NULL,
+1 TSRMLS_CC);
+ }
/* Add $foo[tmp_name] */
if (is_arr_upload) {
@@ -1028,7 +1042,9 @@
} else {
sprintf(lbuf, "%s_size", param);
}
- safe_php_register_variable_ex(lbuf, &file_size, NULL,
0 TSRMLS_CC);
+ if (!is_anonymous) {
+ safe_php_register_variable_ex(lbuf,
+&file_size, NULL, 0 TSRMLS_CC);
+ }
/* Add $foo[size] */
if (is_arr_upload) {
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php