pollita Tue Dec 6 14:13:30 2005 EDT
Modified files:
/php-src/ext/standard http_fopen_wrapper.c
Log:
Block potential segfault.
Context option type not checked for "user_agent","header", and "content"
http://cvs.php.net/diff.php/php-src/ext/standard/http_fopen_wrapper.c?r1=1.103&r2=1.104&ty=u
Index: php-src/ext/standard/http_fopen_wrapper.c
diff -u php-src/ext/standard/http_fopen_wrapper.c:1.103
php-src/ext/standard/http_fopen_wrapper.c:1.104
--- php-src/ext/standard/http_fopen_wrapper.c:1.103 Mon Nov 14 23:24:17 2005
+++ php-src/ext/standard/http_fopen_wrapper.c Tue Dec 6 14:13:27 2005
@@ -19,7 +19,7 @@
| Sara Golemon <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: http_fopen_wrapper.c,v 1.103 2005/11/15 04:24:17 iliaa Exp $ */
+/* $Id: http_fopen_wrapper.c,v 1.104 2005/12/06 19:13:27 pollita Exp $ */
#include "php.h"
#include "php_globals.h"
@@ -305,7 +305,7 @@
if (context &&
php_stream_context_get_option(context, "http", "header",
&tmpzval) == SUCCESS &&
- Z_STRLEN_PP(tmpzval)) {
+ Z_TYPE_PP(tmpzval) == IS_STRING && Z_STRLEN_PP(tmpzval)) {
/* Remove newlines and spaces from start and end,
php_trim will estrndup() */
tmp = php_trim(Z_STRVAL_PP(tmpzval), Z_STRLEN_PP(tmpzval),
NULL, 0, IS_STRING, NULL, 3 TSRMLS_CC);
@@ -409,7 +409,8 @@
}
if (context &&
- php_stream_context_get_option(context, "http", "user_agent",
&ua_zval) == SUCCESS) {
+ php_stream_context_get_option(context, "http", "user_agent",
&ua_zval) == SUCCESS &&
+ Z_TYPE_PP(ua_zval) == IS_STRING) {
ua_str = Z_STRVAL_PP(ua_zval);
} else if (FG(user_agent)) {
ua_str = FG(user_agent);
@@ -441,7 +442,7 @@
/* Request content, such as for POST requests */
if (header_init && context &&
php_stream_context_get_option(context, "http", "content",
&tmpzval) == SUCCESS &&
- Z_STRLEN_PP(tmpzval) > 0) {
+ Z_TYPE_PP(tmpzval) == IS_STRING && Z_STRLEN_PP(tmpzval) > 0) {
if (!(have_header & HTTP_HEADER_CONTENT_LENGTH)) {
scratch_len = snprintf(scratch, scratch_len,
"Content-Length: %d\r\n", Z_STRLEN_PP(tmpzval));
php_stream_write(stream, scratch, scratch_len);
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php