diff options
author | Donald Sharp <sharpd@cumulusnetworks.com> | 2015-09-29 09:25:10 -0400 |
---|---|---|
committer | Paul Jakma <paul@quagga.net> | 2015-10-27 10:53:21 +0000 |
commit | 26a18eb223d26011ac4f1d608f6775ed7ebf8efb (patch) | |
tree | 116460f0d57e4e0e7f2cfa20ea6a9b30be19a16f | |
parent | d8aa4beab72cdd2c2d78f9e624fd4b704eec488f (diff) | |
download | quagga-26a18eb223d26011ac4f1d608f6775ed7ebf8efb.tar.bz2 quagga-26a18eb223d26011ac4f1d608f6775ed7ebf8efb.tar.xz |
quagga: Additional centos 6 -enable-werror fixes
This commit fixes these warnings:
1) bgpd/bgp_nexthop.c - dereferencing pointer 'X' does break strict-aliasing rules
2) pimd/pim_igmp_join.c - dereferencing pointer 'X' does break strict-aliasing rules
3) ripd/ripd.c - 'ifaddr.prefixlen' may be used uninitialized in this function
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
-rw-r--r-- | bgpd/bgp_nexthop.c | 6 | ||||
-rw-r--r-- | pimd/pim_igmp_join.c | 22 | ||||
-rw-r--r-- | ripd/ripd.c | 3 |
3 files changed, 16 insertions, 15 deletions
diff --git a/bgpd/bgp_nexthop.c b/bgpd/bgp_nexthop.c index 33de365e..183a28b1 100644 --- a/bgpd/bgp_nexthop.c +++ b/bgpd/bgp_nexthop.c @@ -648,9 +648,9 @@ bgp_connected_add (struct connected *ifc) addr = ifc->address; + p = *(CONNECTED_PREFIX(ifc)); if (addr->family == AF_INET) { - PREFIX_COPY_IPV4(&p, CONNECTED_PREFIX(ifc)); apply_mask_ipv4 ((struct prefix_ipv4 *) &p); if (prefix_ipv4_any ((struct prefix_ipv4 *) &p)) @@ -674,7 +674,6 @@ bgp_connected_add (struct connected *ifc) #ifdef HAVE_IPV6 else if (addr->family == AF_INET6) { - PREFIX_COPY_IPV6(&p, CONNECTED_PREFIX(ifc)); apply_mask_ipv6 ((struct prefix_ipv6 *) &p); if (IN6_IS_ADDR_UNSPECIFIED (&p.u.prefix6)) @@ -715,9 +714,9 @@ bgp_connected_delete (struct connected *ifc) addr = ifc->address; + p = *(CONNECTED_PREFIX(ifc)); if (addr->family == AF_INET) { - PREFIX_COPY_IPV4(&p, CONNECTED_PREFIX(ifc)); apply_mask_ipv4 ((struct prefix_ipv4 *) &p); if (prefix_ipv4_any ((struct prefix_ipv4 *) &p)) @@ -742,7 +741,6 @@ bgp_connected_delete (struct connected *ifc) #ifdef HAVE_IPV6 else if (addr->family == AF_INET6) { - PREFIX_COPY_IPV6(&p, CONNECTED_PREFIX(ifc)); apply_mask_ipv6 ((struct prefix_ipv6 *) &p); if (IN6_IS_ADDR_UNSPECIFIED (&p.u.prefix6)) diff --git a/pimd/pim_igmp_join.c b/pimd/pim_igmp_join.c index 693a42b7..151b2afd 100644 --- a/pimd/pim_igmp_join.c +++ b/pimd/pim_igmp_join.c @@ -45,18 +45,20 @@ int pim_igmp_join_source(int fd, int ifindex, struct in_addr source_addr) { struct group_source_req req; - struct sockaddr_in *group_sa = (struct sockaddr_in *) &req.gsr_group; - struct sockaddr_in *source_sa = (struct sockaddr_in *) &req.gsr_source; + struct sockaddr_in group; + struct sockaddr_in source; - memset(group_sa, 0, sizeof(*group_sa)); - group_sa->sin_family = AF_INET; - group_sa->sin_addr = group_addr; - group_sa->sin_port = htons(0); + memset(&group, 0, sizeof(group)); + group.sin_family = AF_INET; + group.sin_addr = group_addr; + group.sin_port = htons(0); + memcpy(&req.gsr_group, &group, sizeof(struct sockaddr_in)); - memset(source_sa, 0, sizeof(*source_sa)); - source_sa->sin_family = AF_INET; - source_sa->sin_addr = source_addr; - source_sa->sin_port = htons(0); + memset(&source, 0, sizeof(source)); + source.sin_family = AF_INET; + source.sin_addr = source_addr; + source.sin_port = htons(0); + memcpy(&req.gsr_source, &source, sizeof(struct sockaddr_in)); req.gsr_interface = ifindex; diff --git a/ripd/ripd.c b/ripd/ripd.c index b42ca726..b708889f 100644 --- a/ripd/ripd.c +++ b/ripd/ripd.c @@ -1168,7 +1168,8 @@ rip_response_process (struct rip_packet *packet, int size, struct prefix_ipv4 ifaddr; struct prefix_ipv4 ifaddrclass; int subnetted; - + + memset(&ifaddr, 0, sizeof(ifaddr)); /* We don't know yet. */ subnetted = -1; |