[openssl-dev] [openssl.org #4476] PATCH: fix cast-alignment of "struct lhash_st *"

Viktor Dukhovni openssl-users at dukhovni.org
Thu Mar 24 18:55:25 UTC 2016


On Thu, Mar 24, 2016 at 06:41:34PM +0000, Salz, Rich via RT wrote:

> This looks like a good change.
> 
> > This clears what looks to be hundreds of alignment related warnings like
> > below.
> > 
> > $ git diff include/openssl/lhash.h
> > diff --git a/include/openssl/lhash.h b/include/openssl/lhash.h index
> > 2edd738..5da5054 100644
> > --- a/include/openssl/lhash.h
> > +++ b/include/openssl/lhash.h
> > @@ -180,7 +180,7 @@ void lh_node_usage_stats_bio(const _LHASH *lh, BIO
> > *out);  # define LHASH_OF(type) struct lhash_st_##type
> > 
> >  # define DEFINE_LHASH_OF(type) \
> > -    LHASH_OF(type) { int dummy; }; \
> > +    LHASH_OF(type) { unsigned long dummy; }; \
> >      static ossl_inline LHASH_OF(type) * \
> >          lh_##type##_new(unsigned long (*hfn)(const type *), \
> >                          int (*cfn)(const type *, const type *)) \
> 
> Does changing it to "void *dummy" also work?

Not necessarily.  A union might be more comprehensive.

	LHASH_OF(type) {
	    union {
		void *v;
		unsigned long long ull;
		uint64_t u64;
		long double ld;
	    } u;
	};

using whatever types we're sure to have on all supported platforms.

-- 
	Viktor.


More information about the openssl-dev mailing list