diff options
Diffstat (limited to 'ext')
-rw-r--r-- | ext/socket/raddrinfo.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/ext/socket/raddrinfo.c b/ext/socket/raddrinfo.c index b42707454a..5bdde2584a 100644 --- a/ext/socket/raddrinfo.c +++ b/ext/socket/raddrinfo.c @@ -524,7 +524,8 @@ rsock_fd_family(int fd) struct sockaddr sa = { 0 }; socklen_t sa_len = sizeof(sa); - if (fd < 0 || getsockname(fd, &sa, &sa_len) != 0) { + if (fd < 0 || getsockname(fd, &sa, &sa_len) != 0 || + sa_len < offsetof(struct sockaddr, sa_family) + sizeof(sa.sa_family)) { return AF_UNSPEC; } return sa.sa_family; |