diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c index 8fffbbc81c4c5..b96f281cf3d2c 100644 --- a/ext/sockets/sockets.c +++ b/ext/sockets/sockets.c @@ -1708,8 +1708,8 @@ PHP_FUNCTION(socket_recvfrom) } default: zend_string_efree(recv_buf); - zval_ptr_dtor(&zpayload); - zval_ptr_dtor(&obj); + zval_ptr_dtor(&zpayload); + zval_ptr_dtor(&obj); zend_value_error("unsupported ethernet protocol"); RETURN_THROWS(); } diff --git a/ext/sockets/tests/socket_afpacket.phpt b/ext/sockets/tests/socket_afpacket.phpt index 2e83a654766e0..9d33b2cb0c3a9 100644 --- a/ext/sockets/tests/socket_afpacket.phpt +++ b/ext/sockets/tests/socket_afpacket.phpt @@ -26,6 +26,18 @@ if (!function_exists("posix_getuid") || posix_getuid() != 0) { var_dump($iindex); socket_getpeername($s_c, $istr2, $iindex2); + + $s_s = socket_create(AF_PACKET, SOCK_RAW, ETH_P_ALL); + $v_bind = socket_bind($s_s, 'lo'); + + $buf = str_repeat("0", ETH_FRAME_LEN) . + str_repeat("\xFF", 6) . + str_repeat("\x11", 6) . + "\x08\x00" . + str_pad("TEST", 46, "\x00"); + + var_dump(socket_sendto($s_s, $buf, strlen($buf), 0, "lo", 1)); + socket_close($s_c); ?> --EXPECTF-- @@ -35,3 +47,4 @@ string(2) "lo" int(%i) Warning: socket_getpeername(): unable to retrieve peer name [95]: %sot supported in %s on line %d +int(1574)