summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Zidek <mzidek@redhat.com>2014-06-30 15:52:43 +0200
committerJakub Hrozek <jhrozek@redhat.com>2014-07-01 11:35:24 +0200
commit684405758a96bd9fb47480d44f2e1a2f038f8def (patch)
tree28ae2d800d29dd6e2c0aefc2ce71352f663ddd3e
parent90ac46f71068d131391492360a8553bdd005b5a7 (diff)
downloadsssd-684405758a96bd9fb47480d44f2e1a2f038f8def.tar.gz
sssd-684405758a96bd9fb47480d44f2e1a2f038f8def.tar.xz
sssd-684405758a96bd9fb47480d44f2e1a2f038f8def.zip
Suppress safealign warnings with DISCARD_ALIGN.
These warnings were all false positives. fixes: https://fedorahosted.org/sssd/ticket/1359 Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
-rw-r--r--src/sss_client/nss_group.c2
-rw-r--r--src/sss_client/nss_services.c2
-rw-r--r--src/util/refcount.c8
3 files changed, 8 insertions, 4 deletions
diff --git a/src/sss_client/nss_group.c b/src/sss_client/nss_group.c
index 9e259318d..1614c33b5 100644
--- a/src/sss_client/nss_group.c
+++ b/src/sss_client/nss_group.c
@@ -237,7 +237,7 @@ static int sss_nss_getgr_readrep(struct sss_nss_gr_rep *pr,
pad = PADDING_SIZE(i, char *);
/* now members */
- pr->result->gr_mem = (char **)&(pr->buffer[i+pad]);
+ pr->result->gr_mem = DISCARD_ALIGN(&(pr->buffer[i+pad]), char **);
ptmem = (sizeof(char *) * (mem_num + 1)) + pad;
if (ptmem > dlen) {
diff --git a/src/sss_client/nss_services.c b/src/sss_client/nss_services.c
index e89e0d2f1..64e0b43e1 100644
--- a/src/sss_client/nss_services.c
+++ b/src/sss_client/nss_services.c
@@ -131,7 +131,7 @@ sss_nss_getsvc_readrep(struct sss_nss_svc_rep *sr,
pad = PADDING_SIZE(i, char *);
/* Copy in the aliases */
- sr->result->s_aliases = (char **) &(sr->buffer[i+pad]);
+ sr->result->s_aliases = DISCARD_ALIGN(&(sr->buffer[i+pad]), char **);
ptaliases = (sizeof(char *) * (num_aliases + 1)) + pad;
if (ptaliases > dlen) {
diff --git a/src/util/refcount.c b/src/util/refcount.c
index 735170d1b..69873d3df 100644
--- a/src/util/refcount.c
+++ b/src/util/refcount.c
@@ -48,6 +48,7 @@ _rc_alloc(const void *context, size_t size, size_t refcount_offset,
const char *type_name)
{
struct wrapper *wrapper;
+ char *refcount_pos;
wrapper = talloc(context, struct wrapper);
if (wrapper == NULL) {
@@ -60,7 +61,8 @@ _rc_alloc(const void *context, size_t size, size_t refcount_offset,
return NULL;
};
- wrapper->refcount = (int *)((char *)wrapper->ptr + refcount_offset);
+ refcount_pos = (char *)wrapper->ptr + refcount_offset;
+ wrapper->refcount = DISCARD_ALIGN(refcount_pos, int *);
*wrapper->refcount = 1;
talloc_set_destructor(wrapper, refcount_destructor);
@@ -72,6 +74,7 @@ void *
_rc_reference(const void *context, size_t refcount_offset, void *source)
{
struct wrapper *wrapper;
+ char *refcount_pos;
wrapper = talloc(context, struct wrapper);
if (wrapper == NULL) {
@@ -79,7 +82,8 @@ _rc_reference(const void *context, size_t refcount_offset, void *source)
}
wrapper->ptr = source;
- wrapper->refcount = (int *)((char *)wrapper->ptr + refcount_offset);
+ refcount_pos = (char *)wrapper->ptr + refcount_offset;
+ wrapper->refcount = DISCARD_ALIGN(refcount_pos, int *);
(*wrapper->refcount)++;
talloc_set_destructor(wrapper, refcount_destructor);