summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent JARDIN <vincent.jardin@6wind.com>2017-09-28 00:05:52 +0200
committerVincent JARDIN <vincent.jardin@6wind.com>2017-10-02 09:14:03 +0200
commit89a48046dd5ce3c64bc3cbd9af85a10af8516d61 (patch)
treedf32e399906a006a3816c33a34b432a5e664b507
parentc31a793b486d0bc34e498fdf703fd7120afbecf0 (diff)
ospf_packet: scan-build/clang clean up
get the code safer using snprintf().
-rw-r--r--ospfd/ospf_packet.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/ospfd/ospf_packet.c b/ospfd/ospf_packet.c
index 36f9a6757a..0ab83c407f 100644
--- a/ospfd/ospf_packet.c
+++ b/ospfd/ospf_packet.c
@@ -4065,21 +4065,19 @@ void ospf_ls_ack_send_delayed(struct ospf_interface *oi)
* punt-to-CPU set on them. This may overload the CPU control path that
* can be avoided if the MAC was known apriori.
*/
-#define OSPF_PING_NBR_STR_MAX (8 + 40 + 20)
+#define OSPF_PING_NBR_STR_MAX (BUFSIZ)
void ospf_proactively_arp(struct ospf_neighbor *nbr)
{
char ping_nbr[OSPF_PING_NBR_STR_MAX];
- char *str_ptr;
int ret;
if (!nbr || !nbr->oi || !nbr->oi->ifp)
return;
- str_ptr = strcpy(ping_nbr, "ping -c 1 -I ");
- str_ptr = strcat(str_ptr, nbr->oi->ifp->name);
- str_ptr = strcat(str_ptr, " ");
- str_ptr = strcat(str_ptr, inet_ntoa(nbr->address.u.prefix4));
- str_ptr = strcat(str_ptr, " > /dev/null 2>&1 &");
+ snprintf(ping_nbr, sizeof(ping_nbr),
+ "ping -c 1 -I %s %s > /dev/null 2>&1 &",
+ nbr->oi->ifp->name, inet_ntoa(nbr->address.u.prefix4));
+
ret = system(ping_nbr);
if (IS_DEBUG_OSPF_EVENT)
zlog_debug("Executed %s %s", ping_nbr,