- proper type checking, thanks Sara
[m6w6/ext-http] / http_api.c
index 0bb6cf22a9b6ae65a7f089cf902f64a406d2d44d..6f6c5d63993175d7fbc080c12461c6d64307ddf8 100644 (file)
@@ -296,10 +296,10 @@ PHP_HTTP_API zval *_http_get_server_var_ex(const char *key, size_t key_size, zen
        zval **hsv;
        zval **var;
        
-       if (SUCCESS != zend_hash_find(&EG(symbol_table), "_SERVER", sizeof("_SERVER"), (void **) &hsv)) {
+       if ((SUCCESS != zend_hash_find(&EG(symbol_table), "_SERVER", sizeof("_SERVER"), (void **) &hsv)) || (Z_TYPE_PP(hsv) != IS_ARRAY)) {
                return NULL;
        }
-       if (SUCCESS != zend_hash_find(Z_ARRVAL_PP(hsv), (char *) key, key_size, (void **) &var)) {
+       if ((SUCCESS != zend_hash_find(Z_ARRVAL_PP(hsv), (char *) key, key_size, (void **) &var)) || (Z_TYPE_PP(var) != IS_STRING)) {
                return NULL;
        }
        if (check && !(Z_STRVAL_PP(var) && Z_STRLEN_PP(var))) {