fix cookies
[m6w6/ext-http] / php_http_env.c
index a2c3227ea94127d85a2b6b3dfc3bec3dcc8c8d3d..632562c38a91dc0d1cff50e613824e7d44c27c9b 100644 (file)
@@ -37,12 +37,10 @@ PHP_RINIT_FUNCTION(http_env)
                                sapi_post_entry *post_entry = NULL;
 
                                if ((post_entry = zend_hash_find_ptr(&SG(known_post_content_types), key_str))) {
-                                       if (post_entry) {
-                                               SG(request_info).post_entry = post_entry;
+                                       SG(request_info).post_entry = post_entry;
 
-                                               if (post_entry->post_reader) {
-                                                       post_entry->post_reader();
-                                               }
+                                       if (post_entry->post_reader) {
+                                               post_entry->post_reader();
                                        }
 
                                        if (sapi_module.default_post_reader) {
@@ -53,9 +51,12 @@ PHP_RINIT_FUNCTION(http_env)
 
                                        /*
                                         * the rfc1867 handler is an awkward buddy
+                                        * FIXME: this leaks because php_auto_globals_create_files()
+                                        * as well as the rfc1867_handler call
+                                        * array_init(&PG(http_globals)[TRACK_VARS_FILES])
                                         */
                                        Z_TRY_ADDREF(PG(http_globals)[TRACK_VARS_FILES]);
-                                       zend_hash_str_update(&EG(symbol_table).ht, "_FILES", sizeof("_FILES"), &PG(http_globals)[TRACK_VARS_FILES]);
+                                       zend_hash_str_update(&EG(symbol_table).ht, "_FILES", lenof("_FILES"), &PG(http_globals)[TRACK_VARS_FILES]);
                                }
                        }
                        zend_hash_destroy(&params);
@@ -137,7 +138,7 @@ char *php_http_env_get_request_header(const char *name_str, size_t name_len, siz
                request_headers = PHP_HTTP_G->env.request.headers;
        }
 
-       if ((zvalue == zend_symtable_str_find(request_headers, key, name_len))) {
+       if ((zvalue = zend_symtable_str_find(request_headers, key, name_len))) {
                zend_string *zs = zval_get_string(zvalue);
 
                val = estrndup(zs->val, zs->len);
@@ -813,6 +814,7 @@ static PHP_METHOD(HttpEnv, negotiateLanguage)
                return;
        }
        if (rs_array) {
+               ZVAL_DEREF(rs_array);
                zval_dtor(rs_array);
                array_init(rs_array);
        }
@@ -833,6 +835,7 @@ static PHP_METHOD(HttpEnv, negotiateCharset)
                return;
        }
        if (rs_array) {
+               ZVAL_DEREF(rs_array);
                zval_dtor(rs_array);
                array_init(rs_array);
        }
@@ -852,6 +855,7 @@ static PHP_METHOD(HttpEnv, negotiateEncoding)
                return;
        }
        if (rs_array) {
+               ZVAL_DEREF(rs_array);
                zval_dtor(rs_array);
                array_init(rs_array);
        }
@@ -871,6 +875,7 @@ static PHP_METHOD(HttpEnv, negotiateContentType)
                return;
        }
        if (rs_array) {
+               ZVAL_DEREF(rs_array);
                zval_dtor(rs_array);
                array_init(rs_array);
        }
@@ -894,8 +899,8 @@ static PHP_METHOD(HttpEnv, negotiate)
                return;
        }
 
-
        if (rs_array) {
+               ZVAL_DEREF(rs_array);
                zval_dtor(rs_array);
                array_init(rs_array);
        }