summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>2000-02-15 22:51:18 +0000
committerZeev Suraski <zeev@php.net>2000-02-15 22:51:18 +0000
commit4a211a80fb5702c5524c0db6e67a04d1a4156dc1 (patch)
tree998b7beb62f7f718452de7b8613f551367239e82 /main
parentea459657d111f82f254ee6133608b79b126973cd (diff)
downloadphp-git-4a211a80fb5702c5524c0db6e67a04d1a4156dc1.tar.gz
@- Fixed RFC1867 file upload under Windows (Zeev)
Fixed a memory leak
Diffstat (limited to 'main')
-rw-r--r--main/php_variables.c13
-rw-r--r--main/rfc1867.c7
2 files changed, 16 insertions, 4 deletions
diff --git a/main/php_variables.c b/main/php_variables.c
index 8f02d0c541..842b5d47eb 100644
--- a/main/php_variables.c
+++ b/main/php_variables.c
@@ -192,7 +192,18 @@ void php_treat_data(int arg, char *str ELS_DC PLS_DC SLS_DC)
INIT_PZVAL(array_ptr);
switch (arg) {
case PARSE_POST:
- zend_hash_add_ptr(&EG(symbol_table), "HTTP_POST_VARS", sizeof("HTTP_POST_VARS"), array_ptr, sizeof(pval *),NULL);
+ if (zend_hash_add_ptr(&EG(symbol_table), "HTTP_POST_VARS", sizeof("HTTP_POST_VARS"), array_ptr, sizeof(pval *),NULL)==FAILURE) {
+ zval **p;
+
+ /* This could happen if we're in RFC 1867 file upload */
+ /* The parsing portion of the POST reader should actually move
+ * to this function - Zeev
+ */
+ zval_dtor(array_ptr);
+ FREE_ZVAL(array_ptr);
+ zend_hash_find(&EG(symbol_table), "HTTP_POST_VARS", sizeof("HTTP_POST_VARS"), (void **) &p);
+ array_ptr = *p;
+ }
break;
case PARSE_GET:
zend_hash_add_ptr(&EG(symbol_table), "HTTP_GET_VARS", sizeof("HTTP_GET_VARS"), array_ptr, sizeof(pval *),NULL);
diff --git a/main/rfc1867.c b/main/rfc1867.c
index e9c430c1e5..ef01e1e3f8 100644
--- a/main/rfc1867.c
+++ b/main/rfc1867.c
@@ -67,8 +67,9 @@ static void php_mime_split(char *buf, int cnt, char *boundary)
state = 1;
eolsize = 2;
- if(*(loc+len)==0x0a)
+ if(*(loc+len)==0x0a) {
eolsize = 1;
+ }
rem -= (loc - ptr) + len + eolsize;
ptr = loc + len + eolsize;
@@ -204,7 +205,7 @@ static void php_mime_split(char *buf, int cnt, char *boundary)
php_error(E_WARNING, "File Upload Error - No Mime boundary found after start of file header");
SAFE_RETURN;
}
- fn = tempnam(PG(upload_tmp_dir), "php");
+ fn = tempnam(PG(upload_tmp_dir), "php");
if ((loc - ptr - 4) > PG(upload_max_filesize)) {
php_error(E_WARNING, "Max file size of %ld bytes exceeded - file [%s] not saved", PG(upload_max_filesize),namebuf);
bytes=0;
@@ -217,7 +218,7 @@ static void php_mime_split(char *buf, int cnt, char *boundary)
bytes = 0;
SET_VAR_STRING(namebuf, estrdup("none"));
} else {
- fp = fopen(fn, "w");
+ fp = fopen(fn, "wb");
if (!fp) {
php_error(E_WARNING, "File Upload Error - Unable to open temporary file [%s]", fn);
SAFE_RETURN;