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 <[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