Skip to content

Commit c30bddc

Browse files
committed
Fix GH-18617: socket_import_file_descriptor return check.
to_zval_read_fd_array() helper when retrieving the socket protocol did not check it. close GH-18617
1 parent 910aeaa commit c30bddc

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

NEWS

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ PHP NEWS
4747
- PDO_OCI:
4848
. Fixed bug GH-18494 (PDO OCI segfault in statement GC). (nielsdos)
4949

50+
- Sockets:
51+
- Fixed bug GH-18617 (socket_import_file_descriptor return value
52+
unchecked). (David Carlier)
53+
5054
- SPL:
5155
. Fixed bug GH-18421 (Integer overflow with large numbers in LimitIterator).
5256
(nielsdos)

ext/sockets/conversions.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1457,7 +1457,11 @@ void to_zval_read_fd_array(const char *data, zval *zv, res_context *ctx)
14571457
object_init_ex(&elem, socket_ce);
14581458
php_socket *sock = Z_SOCKET_P(&elem);
14591459

1460-
socket_import_file_descriptor(fd, sock);
1460+
if (!socket_import_file_descriptor(fd, sock)) {
1461+
do_to_zval_err(ctx, "error getting protocol descriptor %d: getsockopt() call failed with errno %d", fd, errno);
1462+
zval_ptr_dtor(&elem);
1463+
return;
1464+
}
14611465
} else {
14621466
php_stream *stream = php_stream_fopen_from_fd(fd, "rw", NULL);
14631467
php_stream_to_zval(stream, &elem);

0 commit comments

Comments
 (0)