cvs: php4(PHP_4_2_0) /main rfc1867.c

From: Date: Sun, 23 Jun 2002 17:26:03 +0000
Subject: cvs: php4(PHP_4_2_0) /main rfc1867.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-12466@lists.php.net to get a copy of this message
sesser Sun Jun 23 13:26:03 2002 EDT Modified files: (Branch: PHP_4_2_0) /php4/main rfc1867.c Log: MFH: several fixes to fileupload code Index: php4/main/rfc1867.c diff -u php4/main/rfc1867.c:1.94.2.4 php4/main/rfc1867.c:1.94.2.5 --- php4/main/rfc1867.c:1.94.2.4 Sat May 11 07:58:52 2002 +++ php4/main/rfc1867.c Sun Jun 23 13:26:03 2002 @@ -16,7 +16,7 @@ | Jani Taskinen <sniper@php.net> | +----------------------------------------------------------------------+ */ -/* $Id: rfc1867.c,v 1.94.2.4 2002/05/11 11:58:52 zeev Exp $ */ +/* $Id: rfc1867.c,v 1.94.2.5 2002/06/23 17:26:03 sesser Exp $ */ /* * This product includes software developed by the Apache Group @@ -158,7 +158,7 @@ */ static int fill_buffer(multipart_buffer *self TSRMLS_DC) { - int bytes_to_read, actual_read = 0; + int bytes_to_read, total_read = 0, actual_read = 0; /* shift the existing data if necessary */ if (self->bytes_in_buffer > 0 && self->buf_begin != self->buffer) { @@ -171,7 +171,7 @@ bytes_to_read = self->bufsize - self->bytes_in_buffer; /* read the required number of bytes */ - if (bytes_to_read > 0) { + while (bytes_to_read > 0) { char *buf = self->buffer + self->bytes_in_buffer; @@ -181,10 +181,14 @@ if (actual_read > 0) { self->bytes_in_buffer += actual_read; SG(read_post_bytes) += actual_read; + total_read += actual_read; + bytes_to_read -= actual_read; + } else { + break; } } - return actual_read; + return total_read; } @@ -334,7 +338,12 @@ /* add header to table */ char *key = line; - char *value = strchr(line, ':'); + char *value = NULL; + + /* space in the beginning means same header */ + if (!isspace(line[0])) { + value = strchr(line, ':'); + } if (value) { *value = 0; @@ -343,7 +352,7 @@ entry.value = estrdup(value); entry.key = estrdup(key); - } else if (zend_llist_remove_tail(header)) { /* If no ':' on the line, add to previous line */ + } else if (header->count) { /* If no ':' on the line, add to previous line */ prev_len = strlen(prev_entry.value); cur_len = strlen(line); @@ -354,6 +363,10 @@ entry.value[cur_len + prev_len] = '\0'; entry.key = estrdup(prev_entry.key); + + zend_llist_remove_tail(header); + } else { + continue; } zend_llist_add_element(header, &entry); @@ -400,7 +413,9 @@ ++pos; } } - ++pos; + if (*pos) { + ++pos; + } } else ++pos; } @@ -706,15 +721,21 @@ /* If file_uploads=off, skip the file part */ if (!PG(file_uploads)) { - efree(filename); - if (param) efree(param); + if (filename) { + efree(filename); + } + if (param) { + efree(param); + } continue; } /* Return with an error if the posted data is garbled */ if (!param) { sapi_module.sapi_error(E_WARNING, "File Upload Mime headers garbled"); - efree(filename); + if (filename) { + efree(filename); + } SAFE_RETURN; } @@ -729,7 +750,9 @@ cancel_upload = 0; if(strlen(filename) == 0) { +#ifdef DEBUG_FILE_UPLOAD sapi_module.sapi_error(E_NOTICE, "No file uploaded"); +#endif cancel_upload = UPLOAD_ERROR_D; } @@ -822,7 +845,7 @@ s = NULL; /* Possible Content-Type: */ - if (!(cd = php_mime_get_hdr_value(header, "Content-Type")) || filename == "") { + if (cancel_upload || !(cd = php_mime_get_hdr_value(header, "Content-Type"))) { cd = ""; } else { /* fix for Opera 6.01 */

« previous php.cvs (#12466) next »