From 8bf65dbab8703697c85b033beb5c189fce17b036 Mon Sep 17 00:00:00 2001 From: Michal Zidek Date: Tue, 10 Sep 2013 23:09:04 +0200 Subject: Properly align buffer when storing pointers. Properly align buffer address to sizeof(char *) when storing pointers to strings. resolves: https://fedorahosted.org/sssd/ticket/1359 --- src/sss_client/nss_group.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'src/sss_client/nss_group.c') diff --git a/src/sss_client/nss_group.c b/src/sss_client/nss_group.c index a7fb09375..9e259318d 100644 --- a/src/sss_client/nss_group.c +++ b/src/sss_client/nss_group.c @@ -233,14 +233,12 @@ static int sss_nss_getgr_readrep(struct sss_nss_gr_rep *pr, NULL); if (ret != EOK) return ret; - /* Make sure pr->buffer[i+pad] is 32 bit aligned */ - pad = 0; - while((i + pad) % 4) { - pad++; - } + /* Make sure pr->buffer[i+pad] is aligned to sizeof(char *) */ + pad = PADDING_SIZE(i, char *); /* now members */ pr->result->gr_mem = (char **)&(pr->buffer[i+pad]); + ptmem = (sizeof(char *) * (mem_num + 1)) + pad; if (ptmem > dlen) { return ERANGE; /* not ENOMEM, ERANGE is what glibc looks for */ -- cgit