-----Original Message-----
From: Ilia Alshanetsky [mailto:[EMAIL PROTECTED]
Sent: Sunday, May 06, 2007 9:21 PM
To: php-cvs@lists.php.net
Subject: [PHP-CVS] cvs: php-src(PHP_5_2) / NEWS /ext/soap soap.c
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.6
85&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 <[EMAIL PROTECTED]>
|
+-------------------------------------------------------------
---------+
*/
-/* $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 {
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php