summaryrefslogtreecommitdiffstats
path: root/lib/libnetgraph/sock.c
diff options
context:
space:
mode:
authorjmg <jmg@FreeBSD.org>2014-01-07 23:01:05 +0000
committerjmg <jmg@FreeBSD.org>2014-01-07 23:01:05 +0000
commitc8c7e397248809f8ef24ab59b5ffce7de7a41bae (patch)
treed0ab07a0d17bd01682ceae8279624a67eb5c2e82 /lib/libnetgraph/sock.c
parent74e1a8fb0804457c6fa452367e27acb4f85523d4 (diff)
downloadFreeBSD-src-c8c7e397248809f8ef24ab59b5ffce7de7a41bae.zip
FreeBSD-src-c8c7e397248809f8ef24ab59b5ffce7de7a41bae.tar.gz
make sure that rbuf is aligned by making a union w/ the structure we
need to access... access the struct through the union too... PR: 185165 Submitted by: Guy Yur MFC after: 1 week
Diffstat (limited to 'lib/libnetgraph/sock.c')
-rw-r--r--lib/libnetgraph/sock.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/libnetgraph/sock.c b/lib/libnetgraph/sock.c
index 5f9f563..12603d3 100644
--- a/lib/libnetgraph/sock.c
+++ b/lib/libnetgraph/sock.c
@@ -111,9 +111,12 @@ gotNode:
/* Save node name */
strlcpy(namebuf, name, sizeof(namebuf));
} else if (dsp != NULL) {
- u_char rbuf[sizeof(struct ng_mesg) + sizeof(struct nodeinfo)];
- struct ng_mesg *const resp = (struct ng_mesg *) rbuf;
- struct nodeinfo *const ni = (struct nodeinfo *) resp->data;
+ union {
+ u_char rbuf[sizeof(struct ng_mesg) +
+ sizeof(struct nodeinfo)];
+ struct ng_mesg res;
+ } res;
+ struct nodeinfo *const ni = (struct nodeinfo *) res.res.data;
/* Find out the node ID */
if (NgSendMsg(cs, ".", NGM_GENERIC_COOKIE,
@@ -123,7 +126,7 @@ gotNode:
NGLOG("send nodeinfo");
goto errout;
}
- if (NgRecvMsg(cs, resp, sizeof(rbuf), NULL) < 0) {
+ if (NgRecvMsg(cs, &res.res, sizeof(res.rbuf), NULL) < 0) {
errnosv = errno;
if (_gNgDebugLevel >= 1)
NGLOG("recv nodeinfo");
OpenPOWER on IntegriCloud