diff --git a/ext/sockets/conversions.c b/ext/sockets/conversions.c index e5894a1de83..b4a13f39cd9 100644 --- a/ext/sockets/conversions.c +++ b/ext/sockets/conversions.c @@ -611,7 +611,7 @@ static void from_zval_write_sin6_addr(const zval *zaddr_str, char *addr6, ser_co } else { /* error already emitted, but let's emit another more relevant */ do_from_zval_err(ctx, "could not resolve address '%s' to get an AF_INET6 " - "address", Z_STRVAL_P(zaddr_str)); + "address", ZSTR_VAL(addr_str)); } zend_tmp_string_release(tmp_addr_str); diff --git a/ext/sockets/tests/gh21161.phpt b/ext/sockets/tests/gh21161.phpt new file mode 100644 index 00000000000..8a3958a583d --- /dev/null +++ b/ext/sockets/tests/gh21161.phpt @@ -0,0 +1,19 @@ +--TEST-- +GH-21161 (IPV6_PKTINFO socket option crash with null addr array entry) +--EXTENSIONS-- +sockets +--SKIPIF-- + +--FILE-- + null, 'ifindex' => 0]); +?> +--EXPECTF-- +Warning: socket_set_option(): Host lookup failed [%i]: %s on line %d + +Warning: socket_set_option(): error converting user data (path: in6_pktinfo > addr): could not resolve address '' to get an AF_INET6 address in %s on line %d