summaryrefslogtreecommitdiff
path: root/lib/odp-util.c
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2011-02-01 11:23:30 -0800
committerBen Pfaff <blp@nicira.com>2011-02-03 14:55:28 -0800
commit535d6987a7af3bef33bf2db21b52bb81e3ea64ee (patch)
treeb5bcaca920c06c1597b47880760b1c8fa474b5c8 /lib/odp-util.c
parent87824b0bfa2daf4a1b1949a96feaeb0d5710fb38 (diff)
downloadopenvswitch-535d6987a7af3bef33bf2db21b52bb81e3ea64ee.tar.gz
Zero padding bytes in odp_key_ipv4, odp_key_arp.
This is a potential security issue for the kernel. In userspace it just provokes false-positive valgrind warnings (which is how I found it). Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Jesse Gross <jesse@nicira.com>
Diffstat (limited to 'lib/odp-util.c')
-rw-r--r--lib/odp-util.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/odp-util.c b/lib/odp-util.c
index c90ff7d24..973490dc8 100644
--- a/lib/odp-util.c
+++ b/lib/odp-util.c
@@ -430,6 +430,7 @@ odp_flow_key_from_flow(struct ofpbuf *buf, const struct flow *flow)
ipv4_key = nl_msg_put_unspec_uninit(buf, ODP_KEY_ATTR_IPV4,
sizeof *ipv4_key);
+ memset(ipv4_key, 0, sizeof *ipv4_key);
ipv4_key->ipv4_src = flow->nw_src;
ipv4_key->ipv4_dst = flow->nw_dst;
ipv4_key->ipv4_proto = flow->nw_proto;
@@ -439,6 +440,7 @@ odp_flow_key_from_flow(struct ofpbuf *buf, const struct flow *flow)
ipv6_key = nl_msg_put_unspec_uninit(buf, ODP_KEY_ATTR_IPV6,
sizeof *ipv6_key);
+ memset(ipv6_key, 0, sizeof *ipv6_key);
memcpy(ipv6_key->ipv6_src, &flow->ipv6_src, sizeof ipv6_key->ipv6_src);
memcpy(ipv6_key->ipv6_dst, &flow->ipv6_dst, sizeof ipv6_key->ipv6_dst);
ipv6_key->ipv6_proto = flow->nw_proto;
@@ -448,6 +450,7 @@ odp_flow_key_from_flow(struct ofpbuf *buf, const struct flow *flow)
arp_key = nl_msg_put_unspec_uninit(buf, ODP_KEY_ATTR_ARP,
sizeof *arp_key);
+ memset(arp_key, 0, sizeof *arp_key);
arp_key->arp_sip = flow->nw_src;
arp_key->arp_tip = flow->nw_dst;
arp_key->arp_op = htons(flow->nw_proto);