]> git.puffer.fish Git - matthieu/frr.git/commitdiff
quagga: Additional centos 6 -enable-werror fixes
authorDonald Sharp <sharpd@cumulusnetworks.com>
Tue, 29 Sep 2015 13:25:10 +0000 (09:25 -0400)
committerDaniel Walton <dwalton@cumulusnetworks.com>
Thu, 26 May 2016 15:33:33 +0000 (15:33 +0000)
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>
(cherry picked from commit 26a18eb223d26011ac4f1d608f6775ed7ebf8efb)

pimd/pim_igmp_join.c

index 693a42b75e3752a4fc019f2e9eee7d86c19384a0..151b2afdbe178cb09f3cd9493edffb6fdf412064 100644 (file)
@@ -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;