From: Olaf Kirch Date: Tue, 2 Sep 2008 16:09:39 +0000 (-0400) Subject: Fix incorrect sizeof() in __rpc_getbroadifs X-Git-Tag: libtirpc-0-1-10~12 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=95c8f7227e6b15f2e430d7b87dadc95b2acd4a61;p=libtirpc Fix incorrect sizeof() in __rpc_getbroadifs __rpc_getbroadifs returns bad broadcast addresses on 32bit machines because when copying the broadcast addresses, ite applies the sizeof() operator to a pointer to a sockaddr, rather than the sockaddr itself. Signed-off-by: Olaf Kirch Signed-off-by: Steve Dickson --- diff --git a/src/clnt_bcast.c b/src/clnt_bcast.c index a96db45..aa2b8f2 100644 --- a/src/clnt_bcast.c +++ b/src/clnt_bcast.c @@ -163,7 +163,7 @@ __rpc_getbroadifs(int af, int proto, int socktype, broadlist_t *list) /* memcpy(&bip->broadaddr, ifap->ifa_broadaddr, (size_t)ifap->ifa_broadaddr->sa_len);*/ memcpy(&bip->broadaddr, ifap->ifa_broadaddr, - (size_t)sizeof(ifap->ifa_broadaddr)); + sizeof(bip->broadaddr)); sin = (struct sockaddr_in *)(void *)&bip->broadaddr; sin->sin_port = ((struct sockaddr_in *)