diff options
Diffstat (limited to 'src/kadmin/server')
| -rw-r--r-- | src/kadmin/server/network.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/kadmin/server/network.c b/src/kadmin/server/network.c index 14cfd46ad..8382b7350 100644 --- a/src/kadmin/server/network.c +++ b/src/kadmin/server/network.c @@ -1146,8 +1146,13 @@ recv_from_to(int s, void *buf, size_t len, int flags, struct sockaddr *to, socklen_t *tolen) { #if (!defined(IP_PKTINFO) && !defined(IPV6_PKTINFO)) || !defined(CMSG_SPACE) - if (to && tolen) + if (to && tolen) { + /* Clobber with something recognizeable in case we try to use + the address. */ + memset(to, 0x40, *tolen); *tolen = 0; + } + return recvfrom(s, buf, len, flags, from, fromlen); #else int r; @@ -1159,6 +1164,10 @@ recv_from_to(int s, void *buf, size_t len, int flags, if (!to || !tolen) return recvfrom(s, buf, len, flags, from, fromlen); + /* Clobber with something recognizeable in case we can't extract + the address but try to use it anyways. */ + memset(to, 0x40, *tolen); + iov.iov_base = buf; iov.iov_len = len; memset(&msg, 0, sizeof(msg)); |
