]> granicus.if.org Git - php/commitdiff
Fixed #72857 stream_socket_recvfrom read access violation
authorAnatol Belski <ab@php.net>
Tue, 16 Aug 2016 20:47:50 +0000 (22:47 +0200)
committerAnatol Belski <ab@php.net>
Tue, 16 Aug 2016 20:47:50 +0000 (22:47 +0200)
ext/standard/streamsfuncs.c
ext/standard/tests/streams/bug72857.phpt [new file with mode: 0644]

index 971bfed3b1e3f5a9dff7cc5fa157ac8f8970b365..e39f9b4cfc64b4163cb308d3d65ad2354820b54e 100644 (file)
@@ -394,7 +394,7 @@ PHP_FUNCTION(stream_socket_recvfrom)
                        );
 
        if (recvd >= 0) {
-               if (zremote) {
+               if (zremote && remote_addr) {
                        ZVAL_STR(zremote, remote_addr);
                }
                ZSTR_VAL(read_buf)[recvd] = '\0';
diff --git a/ext/standard/tests/streams/bug72857.phpt b/ext/standard/tests/streams/bug72857.phpt
new file mode 100644 (file)
index 0000000..2dc53dd
--- /dev/null
@@ -0,0 +1,16 @@
+--TEST--
+Bug #72857 stream_socket_recvfrom read access violation
+--FILE--
+<?php
+       $fp0 = fopen('stream_socket_recvfrom.tmp', 'w');
+       $v2=10;
+       $v3=STREAM_PEEK;
+       $v4="A";
+
+       var_dump(stream_socket_recvfrom($fp0,$v2,$v3,$v4), $v4); 
+?>
+==DONE==
+--EXPECT--
+string(0) ""
+NULL
+==DONE==