summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/socket/raddrinfo.c3
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;