From ca34553f990ea016b5e6b3c3d7d98f4f18c474b5 Mon Sep 17 00:00:00 2001 From: fedor Date: Wed, 20 Apr 2005 02:58:17 +0000 Subject: [PATCH] * Tools/gdomap.c (init_iface): Round size to make sure we don't violate pointer alignment boundaries. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@21128 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 5 +++++ Tools/gdomap.c | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 40e04892f..3a93ae589 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-04-19 Adam Fedor + + * Tools/gdomap.c (init_iface): Round size to make sure we don't violate + pointer alignment boundaries. + 2005-04-14 Richard Frith-Macdonald * Source/Additions/GSMime.m: Add tweak to cope with buggy mailers diff --git a/Tools/gdomap.c b/Tools/gdomap.c index c825597f1..8380bede6 100644 --- a/Tools/gdomap.c +++ b/Tools/gdomap.c @@ -128,6 +128,10 @@ #define MAX_EXTRA ((GDO_NAME_MAX_LEN - 2 * IASIZE)/IASIZE) +#define ROUND(V, A) \ + ({ typeof(V) __v=(V); typeof(A) __a=(A); \ + __a*((__v+__a-1)/__a); }) + typedef unsigned char *uptr; #ifndef __MINGW__ static int is_daemon = 0; /* Currently running as daemon. */ @@ -1265,7 +1269,8 @@ init_iface() { ifreq = *(struct ifreq*)ifr_ptr; #ifdef HAVE_SA_LEN - ifr_ptr += sizeof(ifreq) - sizeof(ifreq.ifr_addr) + ifreq.ifr_addr.sa_len; + ifr_ptr += sizeof(ifreq) - sizeof(ifreq.ifr_addr) + + ROUND(ifreq.ifr_addr.sa_len, sizeof(struct ifreq*)); #else ifr_ptr += sizeof(ifreq); #endif