Re: [PATCH 3/3] libnetfilter-conntrack byte alignment

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Use union of char buffer and message header to ensure proper byte
alignment.

Signed-off-by: Fabian Hugelshofer <hugelshofer2006@xxxxxx>

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);
 }
 
 
diff --git a/src/expect/api.c b/src/expect/api.c
index eefc294..ab804ca 100644
--- a/src/expect/api.c
+++ b/src/expect/api.c
@@ -507,16 +507,18 @@ int nfexp_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 (nfexp_build_query(h->nfnlssh_exp, qt, data, req, size) == -1)
+	if (nfexp_build_query(h->nfnlssh_exp, qt, data, &u.req, size) == -1)
 		return -1;
 
-	return nfnl_query(h->nfnlh, &req->nlh);
+	return nfnl_query(h->nfnlh, &u.req.nlh);
 }
 
 /**


--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux