24 lines
911 B
Diff
24 lines
911 B
Diff
|
From: Olaf Kirch <okir@suse.de>
|
||
|
Subject: 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 <okir@suse.de>
|
||
|
|
||
|
Index: libtirpc-0.1.7/src/clnt_bcast.c
|
||
|
===================================================================
|
||
|
--- libtirpc-0.1.7.orig/src/clnt_bcast.c
|
||
|
+++ libtirpc-0.1.7/src/clnt_bcast.c
|
||
|
@@ -163,7 +163,7 @@ __rpc_getbroadifs(int af, int proto, int
|
||
|
/* 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 *)
|