[SSSD] [PATCH 6/7] Properly align buffer when storing pointers.

Michal Židek mzidek at redhat.com
Tue Nov 19 15:08:40 UTC 2013


On 11/14/2013 01:14 PM, Lukas Slebodnik wrote:>>From 
45336d3596b8d93ebf866c727c566169c404b60c Mon Sep 17 00:00:00 2001
 >> >From: Michal Zidek<mzidek at redhat.com>
 >> >Date: Tue, 10 Sep 2013 23:09:04 +0200
 >> >Subject: [PATCH 6/7] Properly align buffer when storing pointers.
 >> >
 >> >Properly align buffer address to sizeof(char *) when storing
 >> >pointers to string and disable alignment warnings with #pragma.
 >> >
 >> >resolves:
 >> >https://fedorahosted.org/sssd/ticket/1359
 >> >---
 >> >src/sss_client/nss_group.c    | 5 +++--
 >> >src/sss_client/nss_mc_group.c | 3 +++
 >> >src/sss_client/nss_services.c | 4 ++--
 >> >3 files changed, 8 insertions(+), 4 deletions(-)
 >> >
 >> >diff --git a/src/sss_client/nss_group.c b/src/sss_client/nss_group.c
 >> >index a7fb093..68e14d3 100644
 >> >--- a/src/sss_client/nss_group.c
 >> >+++ b/src/sss_client/nss_group.c
 >> >@@ -233,14 +233,15 @@ 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 */
 >> >+    /* Make sure pr->buffer[i+pad] is aligned to sizeof(char *) */
 >> >     pad = 0;
 >> >-    while((i + pad) % 4) {
 >> >+    while((i + pad) % sizeof(char *)) {
 >    I am not sure about this. There was comment;
 >    "Make sure pr->buffer[i+pad] is 32 bit aligned"
 >
 > And you changed alignment to 64-bits on x86_64 and to 32-bits on i386
 > platform.
 > This is a client code, so some more experienced should tell what
 > is the right solution.
 >

Aligning the address to 4 bytes and then using it as the beginning of 
array of pointers is simply wrong and should be fixed. So I think it was 
a mistake in both the code and the comment (maybe one led to the other). 
But is is possible that I am reading the code wrong.

Michal
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0006-Properly-align-buffer-when-storing-pointers.patch
Type: text/x-patch
Size: 2383 bytes
Desc: not available
URL: <https://lists.fedorahosted.org/pipermail/sssd-devel/attachments/20131119/fc0f619e/attachment.bin>


More information about the sssd-devel mailing list