From a47403d558f98368366116bf3aad8a6932671fc6 Mon Sep 17 00:00:00 2001 From: Fabian Hugelshofer Date: Wed, 18 Jun 2008 14:24:57 +0200 Subject: Use union of char buffer and message header to ensure proper byte alignment. Signed-off-by: Fabian Hugelshofer --- src/conntrack/api.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'src/conntrack/api.c') diff --git a/src/conntrack/api.c b/src/conntrack/api.c index b1347dc..58efd32 100644 --- a/src/conntrack/api.c +++ b/src/conntrack/api.c @@ -563,16 +563,18 @@ int nfct_query(struct nfct_handle *h, const void *data) { size_t size = 4096; /* enough for now */ - char buffer[4096]; - struct nfnlhdr *req = (struct nfnlhdr *) buffer; + union { + char buffer[size]; + struct nfnlhdr req; + } u; assert(h != NULL); assert(data != NULL); - if (nfct_build_query(h->nfnlssh_ct, qt, data, req, size) == -1) + if (nfct_build_query(h->nfnlssh_ct, qt, data, &u.req, size) == -1) return -1; - return nfnl_query(h->nfnlh, &req->nlh); + return nfnl_query(h->nfnlh, &u.req.nlh); } /** @@ -593,16 +595,18 @@ int nfct_send(struct nfct_handle *h, const void *data) { size_t size = 4096; /* enough for now */ - char buffer[4096]; - struct nfnlhdr *req = (struct nfnlhdr *) buffer; + union { + char buffer[size]; + struct nfnlhdr req; + } u; assert(h != NULL); assert(data != NULL); - if (nfct_build_query(h->nfnlssh_ct, qt, data, req, size) == -1) + if (nfct_build_query(h->nfnlssh_ct, qt, data, &u.req, size) == -1) return -1; - return nfnl_send(h->nfnlh, &req->nlh); + return nfnl_send(h->nfnlh, &u.req.nlh); } -- cgit v1.2.3