All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 3/3] libnetfilter-conntrack byte alignment
@ 2008-06-03 10:21 Fabian Hugelshofer
  2008-06-16 20:32 ` Fabian Hugelshofer
  0 siblings, 1 reply; 3+ messages in thread
From: Fabian Hugelshofer @ 2008-06-03 10:21 UTC (permalink / raw)
  To: netfilter-devel

Aligns buffers to maximum alignment of architecture to make the cast of
char pointers to struct pointers more portable.

Signed-off-by: Fabian Hugelshofer <hugelshofer2006@gmx.ch>


diff -ruN libnetfilter_conntrack-0.0.89.orig/src/conntrack/api.c libnetfilter_conntrack-0.0.89/src/conntrack/api.c
--- libnetfilter_conntrack-0.0.89.orig/src/conntrack/api.c	2008-06-02 19:35:12.000000000 +0100
+++ libnetfilter_conntrack-0.0.89/src/conntrack/api.c	2008-06-02 19:38:07.000000000 +0100
@@ -561,7 +561,7 @@
 	       const void *data)
 {
 	size_t size = 4096;	/* enough for now */
-	char buffer[4096];
+	char buffer[4096] __attribute__ ((aligned));
 	struct nfnlhdr *req = (struct nfnlhdr *) buffer;
 
 	assert(h != NULL);
diff -ruN libnetfilter_conntrack-0.0.89.orig/src/expect/api.c libnetfilter_conntrack-0.0.89/src/expect/api.c
--- libnetfilter_conntrack-0.0.89.orig/src/expect/api.c	2008-06-02 19:35:12.000000000 +0100
+++ libnetfilter_conntrack-0.0.89/src/expect/api.c	2008-06-02 19:39:59.000000000 +0100
@@ -507,7 +507,7 @@
 	        const void *data)
 {
 	size_t size = 4096;	/* enough for now */
-	char buffer[4096];
+	char buffer[4096] __attribute__ ((aligned));
 	struct nfnlhdr *req = (struct nfnlhdr *) buffer;
 
 	assert(h != NULL);


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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH 3/3] libnetfilter-conntrack byte alignment
  2008-06-03 10:21 [PATCH 3/3] libnetfilter-conntrack byte alignment Fabian Hugelshofer
@ 2008-06-16 20:32 ` Fabian Hugelshofer
  2008-06-18 12:40   ` Pablo Neira Ayuso
  0 siblings, 1 reply; 3+ messages in thread
From: Fabian Hugelshofer @ 2008-06-16 20:32 UTC (permalink / raw)
  To: netfilter-devel; +Cc: pablo

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

Signed-off-by: Fabian Hugelshofer <hugelshofer2006@gmx.ch>

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);
 }
 
 /**



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH 3/3] libnetfilter-conntrack byte alignment
  2008-06-16 20:32 ` Fabian Hugelshofer
@ 2008-06-18 12:40   ` Pablo Neira Ayuso
  0 siblings, 0 replies; 3+ messages in thread
From: Pablo Neira Ayuso @ 2008-06-18 12:40 UTC (permalink / raw)
  To: Fabian Hugelshofer; +Cc: netfilter-devel

Fabian Hugelshofer wrote:
> Use union of char buffer and message header to ensure proper byte
> alignment.

Also applied. Thanks.

-- 
"Los honestos son inadaptados sociales" -- Les Luthiers

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-06-18 12:40 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-06-03 10:21 [PATCH 3/3] libnetfilter-conntrack byte alignment Fabian Hugelshofer
2008-06-16 20:32 ` Fabian Hugelshofer
2008-06-18 12:40   ` Pablo Neira Ayuso

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.