cvs: php4 /main SAPI.c php_content_types.c
| From: | Hartmut Holzgraefe | Date: | Fri, 08 Nov 2002 08:41:53 +0000 |
| Subject: | cvs: php4 /main SAPI.c php_content_types.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-15905@lists.php.net to get a copy of this message | ||
hholzgra Fri Nov 8 03:41:53 2002 EDT
Modified files:
/php4/main SAPI.c php_content_types.c
Log:
fix for #20198:
"always_populate_raw_post_data = On" breaks HTTP file uploads
Index: php4/main/SAPI.c
diff -u php4/main/SAPI.c:1.153 php4/main/SAPI.c:1.154
--- php4/main/SAPI.c:1.153 Mon Oct 21 15:18:39 2002
+++ php4/main/SAPI.c Fri Nov 8 03:41:52 2002
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: SAPI.c,v 1.153 2002/10/21 19:18:39 hholzgra Exp $ */
+/* $Id: SAPI.c,v 1.154 2002/11/08 08:41:52 hholzgra Exp $ */
#include <ctype.h>
#include <sys/stat.h>
@@ -150,15 +150,19 @@
}
}
+ /* now try to find an appropriate POST content handler */
if (zend_hash_find(&known_post_content_types, content_type, content_type_length+1, (void **)
&post_entry)==SUCCESS) {
+ /* found one, register it for use */
SG(request_info).post_entry = post_entry;
post_reader_func = post_entry->post_reader;
} else {
+ /* fallback */
+ SG(request_info).post_entry = NULL;
if (!sapi_module.default_post_reader) {
+ /* no default reader ? */
sapi_module.sapi_error(E_WARNING, "Unsupported content type: '%s'",
content_type);
return;
}
- SG(request_info).post_entry = NULL;
}
if (oldchar) {
*(p-1) = oldchar;
Index: php4/main/php_content_types.c
diff -u php4/main/php_content_types.c:1.22 php4/main/php_content_types.c:1.23
--- php4/main/php_content_types.c:1.22 Mon Oct 21 12:41:06 2002
+++ php4/main/php_content_types.c Fri Nov 8 03:41:52 2002
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_content_types.c,v 1.22 2002/10/21 16:41:06 hholzgra Exp $ */
+/* $Id: php_content_types.c,v 1.23 2002/11/08 08:41:52 hholzgra Exp $ */
#include "php.h"
#include "SAPI.h"
@@ -37,12 +37,25 @@
*/
SAPI_API SAPI_POST_READER_FUNC(php_default_post_reader)
{
- char *data;
+ char *data = NULL;
if(PG(always_populate_raw_post_data)) {
- if(!SG(request_info).post_data) sapi_read_standard_form_data(TSRMLS_C);
- data = estrndup(SG(request_info).post_data, SG(request_info).post_data_length);
- SET_VAR_STRINGL("HTTP_RAW_POST_DATA", data, SG(request_info).post_data_length);
+ if(NULL == SG(request_info).post_data) { /* no data yet */
+ if(NULL == SG(request_info).post_entry) {
+ /* no post handler registered, so we just swallow the data */
+ sapi_read_standard_form_data(TSRMLS_C);
+ data = SG(request_info).post_data;
+ SG(request_info).post_data = NULL;
+ SG(request_info).post_data_length = 0;
+ }
+ } else {
+ /* copy existing post data */
+ data = estrndup(SG(request_info).post_data, SG(request_info).post_data_length);
+ }
+
+ if(data) {
+ SET_VAR_STRINGL("HTTP_RAW_POST_DATA", data, SG(request_info).post_data_length);
+ }
}
}
/* }}} */