]> granicus.if.org Git - php/commitdiff
Fixed fsockopen's reference argument handling
authorXinchen Hui <laruence@gmail.com>
Mon, 3 Mar 2014 10:14:59 +0000 (18:14 +0800)
committerXinchen Hui <laruence@gmail.com>
Mon, 3 Mar 2014 10:14:59 +0000 (18:14 +0800)
ext/standard/fsock.c

index d1446555a512e3f8adb54fad48954ecb1600f96e..0774893e85016c280fda16d268a3b0c6cb170173 100644 (file)
@@ -68,10 +68,12 @@ static void php_fsockopen_stream(INTERNAL_FUNCTION_PARAMETERS, int persistent)
        tv.tv_usec = conv % 1000000;
 
        if (zerrno)     {
+               zerrno = Z_REFVAL_P(zerrno);
                zval_dtor(zerrno);
                ZVAL_LONG(zerrno, 0);
        }
        if (zerrstr) {
+               zerrstr = Z_REFVAL_P(zerrstr);
                zval_dtor(zerrstr);
                ZVAL_EMPTY_STRING(zerrstr);
        }
@@ -100,8 +102,8 @@ static void php_fsockopen_stream(INTERNAL_FUNCTION_PARAMETERS, int persistent)
                        zval_dtor(zerrstr);
 //???                  ZVAL_STRING(zerrstr, errstr, 0);
                        ZVAL_STRING(zerrstr, errstr);
-               }
-               else if (!zerrstr && errstr) {
+                       efree(errstr);
+               else if (!zerrstr && errstr) {
                        efree(errstr);
                }