mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
@- Fixed RFC1867 file upload under Windows (Zeev)
Fixed a memory leak
This commit is contained in:
parent
ea459657d1
commit
4a211a80fb
2 changed files with 16 additions and 4 deletions
|
@ -192,7 +192,18 @@ void php_treat_data(int arg, char *str ELS_DC PLS_DC SLS_DC)
|
||||||
INIT_PZVAL(array_ptr);
|
INIT_PZVAL(array_ptr);
|
||||||
switch (arg) {
|
switch (arg) {
|
||||||
case PARSE_POST:
|
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;
|
break;
|
||||||
case PARSE_GET:
|
case PARSE_GET:
|
||||||
zend_hash_add_ptr(&EG(symbol_table), "HTTP_GET_VARS", sizeof("HTTP_GET_VARS"), array_ptr, sizeof(pval *),NULL);
|
zend_hash_add_ptr(&EG(symbol_table), "HTTP_GET_VARS", sizeof("HTTP_GET_VARS"), array_ptr, sizeof(pval *),NULL);
|
||||||
|
|
|
@ -67,8 +67,9 @@ static void php_mime_split(char *buf, int cnt, char *boundary)
|
||||||
state = 1;
|
state = 1;
|
||||||
|
|
||||||
eolsize = 2;
|
eolsize = 2;
|
||||||
if(*(loc+len)==0x0a)
|
if(*(loc+len)==0x0a) {
|
||||||
eolsize = 1;
|
eolsize = 1;
|
||||||
|
}
|
||||||
|
|
||||||
rem -= (loc - ptr) + len + eolsize;
|
rem -= (loc - ptr) + len + eolsize;
|
||||||
ptr = loc + 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");
|
php_error(E_WARNING, "File Upload Error - No Mime boundary found after start of file header");
|
||||||
SAFE_RETURN;
|
SAFE_RETURN;
|
||||||
}
|
}
|
||||||
fn = tempnam(PG(upload_tmp_dir), "php");
|
fn = tempnam(PG(upload_tmp_dir), "php");
|
||||||
if ((loc - ptr - 4) > PG(upload_max_filesize)) {
|
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);
|
php_error(E_WARNING, "Max file size of %ld bytes exceeded - file [%s] not saved", PG(upload_max_filesize),namebuf);
|
||||||
bytes=0;
|
bytes=0;
|
||||||
|
@ -217,7 +218,7 @@ static void php_mime_split(char *buf, int cnt, char *boundary)
|
||||||
bytes = 0;
|
bytes = 0;
|
||||||
SET_VAR_STRING(namebuf, estrdup("none"));
|
SET_VAR_STRING(namebuf, estrdup("none"));
|
||||||
} else {
|
} else {
|
||||||
fp = fopen(fn, "w");
|
fp = fopen(fn, "wb");
|
||||||
if (!fp) {
|
if (!fp) {
|
||||||
php_error(E_WARNING, "File Upload Error - Unable to open temporary file [%s]", fn);
|
php_error(E_WARNING, "File Upload Error - Unable to open temporary file [%s]", fn);
|
||||||
SAFE_RETURN;
|
SAFE_RETURN;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue