cvs: php-src(PHP_5_2) / NEWS /ext/soap soap.c
| From: | Ilia Alshanetsky | Date: | Sun, 06 May 2007 17:21:13 +0000 |
| Subject: | cvs: php-src(PHP_5_2) / NEWS /ext/soap soap.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-44204@lists.php.net to get a copy of this message | ||
iliaa Sun May 6 17:21:13 2007 UTC
Modified files: (Branch: PHP_5_2)
/php-src NEWS
/php-src/ext/soap soap.c
Log:
Allow SOAP extension's handler() to work even when
always_populate_raw_post_data is off.
# Tests will be updated in the next few days
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.685&r2=1.2027.2.547.2.686&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.685 php-src/NEWS:1.2027.2.547.2.686
--- php-src/NEWS:1.2027.2.547.2.685 Sun May 6 16:34:14 2007
+++ php-src/NEWS Sun May 6 17:21:13 2007
@@ -1,6 +1,8 @@
PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? 2007, PHP 5.2.3
+- Allow SOAP extension's handler() to work even when
+ always_populate_raw_post_data is off. (Ilia)
- Fixed ext/filter Email Validation Vulnerability (MOPB-24 by Stefan Esser)
(Ilia)
- Fixed altering $this via argument named "this". (Dmitry)
http://cvs.php.net/viewvc.cgi/php-src/ext/soap/soap.c?r1=1.156.2.28.2.23&r2=1.156.2.28.2.24&diff_format=u
Index: php-src/ext/soap/soap.c
diff -u php-src/ext/soap/soap.c:1.156.2.28.2.23 php-src/ext/soap/soap.c:1.156.2.28.2.24
--- php-src/ext/soap/soap.c:1.156.2.28.2.23 Wed May 2 08:22:13 2007
+++ php-src/ext/soap/soap.c Sun May 6 17:21:13 2007
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: soap.c,v 1.156.2.28.2.23 2007/05/02 08:22:13 dmitry Exp $ */
+/* $Id: soap.c,v 1.156.2.28.2.24 2007/05/06 17:21:13 iliaa Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -140,8 +140,6 @@
SOAP_GLOBAL(soap_version) = _old_soap_version;
#endif
-#define HTTP_RAW_POST_DATA "HTTP_RAW_POST_DATA"
-
#define ZERO_PARAM() \
if (ZEND_NUM_ARGS() != 0) \
WRONG_PARAM_COUNT;
@@ -1403,7 +1401,7 @@
sdlPtr old_sdl = NULL;
soapServicePtr service;
xmlDocPtr doc_request=NULL, doc_return;
- zval function_name, **params, **raw_post, *soap_obj, retval;
+ zval function_name, **params, *soap_obj, retval;
char *fn_name, cont_len[30];
int num_params = 0, size, i, call_status = 0;
xmlChar *buf;
@@ -1478,8 +1476,9 @@
}
if (ZEND_NUM_ARGS() == 0) {
- if (zend_hash_find(&EG(symbol_table), HTTP_RAW_POST_DATA, sizeof(HTTP_RAW_POST_DATA), (void
**) &raw_post)!=FAILURE
- && ((*raw_post)->type==IS_STRING)) {
+ if (SG(request_info).raw_post_data) {
+ char *post_data = SG(request_info).raw_post_data;
+ int post_data_length = SG(request_info).raw_post_data_length;
zval **server_vars, **encoding;
zend_is_auto_global("_SERVER", sizeof("_SERVER")-1 TSRMLS_CC);
@@ -1497,13 +1496,13 @@
zend_hash_exists(EG(function_table), "gzinflate", sizeof("gzinflate")))
{
ZVAL_STRING(&func, "gzinflate", 0);
params[0] = ¶m;
- ZVAL_STRINGL(params[0], Z_STRVAL_PP(raw_post)+10, Z_STRLEN_PP(raw_post)-10, 0);
+ ZVAL_STRINGL(params[0], post_data+10, post_data_length-10, 0);
INIT_PZVAL(params[0]);
} else if (strcmp(Z_STRVAL_PP(encoding),"deflate") == 0 &&
zend_hash_exists(EG(function_table), "gzuncompress",
sizeof("gzuncompress"))) {
ZVAL_STRING(&func, "gzuncompress", 0);
params[0] = ¶m;
- ZVAL_STRINGL(params[0], Z_STRVAL_PP(raw_post), Z_STRLEN_PP(raw_post), 0);
+ ZVAL_STRINGL(params[0], post_data, post_data_length, 0);
INIT_PZVAL(params[0]);
} else {
php_error_docref(NULL TSRMLS_CC, E_ERROR,"Request is compressed with unknown compression
'%s'",Z_STRVAL_PP(encoding));
@@ -1516,16 +1515,9 @@
php_error_docref(NULL TSRMLS_CC, E_ERROR,"Can't uncompress compressed
request");
}
} else {
- doc_request = soap_xmlParseMemory(Z_STRVAL_PP(raw_post),Z_STRLEN_PP(raw_post));
+ doc_request = soap_xmlParseMemory(post_data, post_data_length);
}
} else {
- if (SG(request_info).request_method &&
- strcmp(SG(request_info).request_method, "POST") == 0) {
- if (!zend_ini_long("always_populate_raw_post_data",
sizeof("always_populate_raw_post_data"), 0)) {
- php_error_docref(NULL TSRMLS_CC, E_ERROR, "PHP-SOAP requires
'always_populate_raw_post_data' to be on please check your php.ini file");
- }
- }
- soap_server_fault("Server", "Bad Request. Can't find
HTTP_RAW_POST_DATA", NULL, NULL, NULL TSRMLS_CC);
return;
}
} else {