From 932135bb1acdf269caeaaf60dea330e374b90f15 Mon Sep 17 00:00:00 2001 From: Joseph Henry Date: Wed, 22 Mar 2017 16:51:43 -0700 Subject: [PATCH] gracefully handle invalid addrlen value in recvfrom --- src/sockets.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/sockets.c b/src/sockets.c index 65ab0ac..6b43e46 100644 --- a/src/sockets.c +++ b/src/sockets.c @@ -325,8 +325,11 @@ int (*realclose)(CLOSE_SIG); return n; } - if(n > 0) { - // TODO: case for address size mismatch? + if(n > 0) { + // For cases where *addrlen is an unreasonable value + // FIXME: This should probably have some more thought put into it + *addrlen = *addrlen > SDK_MTU ? 0 : *addrlen; + memcpy(addr, tmpbuf, *addrlen); memcpy(&tmpsz, tmpbuf + sizeof(struct sockaddr_storage), sizeof(tmpsz)); memcpy(&pnum, tmpbuf + sizeof(struct sockaddr_storage) + sizeof(int), sizeof(int));