summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2015-09-29 09:25:10 -0400
committerPaul Jakma <paul@quagga.net>2015-10-27 10:53:21 +0000
commit26a18eb223d26011ac4f1d608f6775ed7ebf8efb (patch)
tree116460f0d57e4e0e7f2cfa20ea6a9b30be19a16f
parentd8aa4beab72cdd2c2d78f9e624fd4b704eec488f (diff)
downloadquagga-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.c6
-rw-r--r--pimd/pim_igmp_join.c22
-rw-r--r--ripd/ripd.c3
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;