From 8ba7105057357c566a0475b32829241cca85d848 Mon Sep 17 00:00:00 2001 From: Nitin Soni Date: Tue, 29 Jan 2019 06:29:57 -0800 Subject: bgpd: fix valgrind flagged errors Executed some evpn related tests with valgrind and saw some errors related to uninitialized memory and overlapping memcpy. This commit fixes those. Ticket: CM-21218 Signed-off-by: Nitin Soni Reviewed-by: CCR-8249 --- bgpd/bgp_route.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'bgpd/bgp_route.c') diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index 07077dfe1..804b035b8 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -3245,9 +3245,11 @@ int bgp_update(struct peer *peer, struct prefix *p, uint32_t addpath_id, /* Update MPLS label */ if (has_valid_label) { extra = bgp_path_info_extra_get(pi); - memcpy(&extra->label, label, - num_labels * sizeof(mpls_label_t)); - extra->num_labels = num_labels; + if (extra->label != label) { + memcpy(&extra->label, label, + num_labels * sizeof(mpls_label_t)); + extra->num_labels = num_labels; + } if (!(afi == AFI_L2VPN && safi == SAFI_EVPN)) bgp_set_valid_label(&extra->label[0]); } @@ -3416,8 +3418,10 @@ int bgp_update(struct peer *peer, struct prefix *p, uint32_t addpath_id, /* Update MPLS label */ if (has_valid_label) { extra = bgp_path_info_extra_get(new); - memcpy(&extra->label, label, num_labels * sizeof(mpls_label_t)); - extra->num_labels = num_labels; + if (extra->label != label) { + memcpy(&extra->label, label, num_labels * sizeof(mpls_label_t)); + extra->num_labels = num_labels; + } if (!(afi == AFI_L2VPN && safi == SAFI_EVPN)) bgp_set_valid_label(&extra->label[0]); } -- cgit v1.2.3