]> granicus.if.org Git - php/commitdiff
Fixed bug #50267 (get_browser(null) does not use HTTP_USER_AGENT)
authorJani Taskinen <jani@php.net>
Tue, 24 Nov 2009 00:18:16 +0000 (00:18 +0000)
committerJani Taskinen <jani@php.net>
Tue, 24 Nov 2009 00:18:16 +0000 (00:18 +0000)
NEWS
ext/standard/browscap.c

diff --git a/NEWS b/NEWS
index 7278fdb6726fc329a76bdfa718941b72cdcfca6a..3cbbc4d1af2443ca8758fe9c2780dc7ee4929b89 100644 (file)
--- 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).
index 61857e59c9a897a586e6a39a9f67b21a0273b38c..41e9c46d412efc2652c774f7436c2d9a911817af 100644 (file)
@@ -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);