From ebc1b9f13d9bcabb335ea9002d9b470ba39e112d Mon Sep 17 00:00:00 2001 From: Jani Taskinen Date: Tue, 24 Nov 2009 00:18:16 +0000 Subject: [PATCH] Fixed bug #50267 (get_browser(null) does not use HTTP_USER_AGENT) --- NEWS | 1 + ext/standard/browscap.c | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index 7278fdb672..3cbbc4d1af 100644 --- a/NEWS +++ b/NEWS @@ -24,6 +24,7 @@ PHP NEWS - Fixed memory leak in extension loading when an error occurs on Windows. (Pierre) +- Fixed bug #50267 (get_browser(null) does not use HTTP_USER_AGENT). (Jani) - Fixed bug #50240 (pdo_mysql.default_socket in php.ini shouldn't used if it is empty). (foutrelis at gmail dot com, Ilia) - Fixed bug #50219 (soap call Segmentation fault on a redirected url). diff --git a/ext/standard/browscap.c b/ext/standard/browscap.c index 61857e59c9..41e9c46d41 100644 --- a/ext/standard/browscap.c +++ b/ext/standard/browscap.c @@ -328,7 +328,7 @@ PHP_FUNCTION(get_browser) char *agent_name = NULL; int agent_name_len = 0; zend_bool return_array = 0; - zval **agent, **z_agent_name; + zval **agent, **z_agent_name, **http_user_agent; zval *found_browser_entry, *tmp_copy; char *lookup_browser_name; char *browscap = INI_STR("browscap"); @@ -344,11 +344,14 @@ PHP_FUNCTION(get_browser) if (agent_name == NULL) { zend_is_auto_global("_SERVER", sizeof("_SERVER") - 1 TSRMLS_CC); - if (!PG(http_globals)[TRACK_VARS_SERVER] - || zend_hash_find(PG(http_globals)[TRACK_VARS_SERVER]->value.ht, "HTTP_USER_AGENT", sizeof("HTTP_USER_AGENT"), (void **) &agent_name) == FAILURE) { + if (!PG(http_globals)[TRACK_VARS_SERVER] || + zend_hash_find(HASH_OF(PG(http_globals)[TRACK_VARS_SERVER]), "HTTP_USER_AGENT", sizeof("HTTP_USER_AGENT"), (void **) &http_user_agent) == FAILURE + ) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "HTTP_USER_AGENT variable is not set, cannot determine user agent name"); RETURN_FALSE; } + agent_name = Z_STRVAL_PP(http_user_agent); + agent_name_len = Z_STRLEN_PP(http_user_agent); } lookup_browser_name = estrndup(agent_name, agent_name_len); -- 2.40.0