]> git.puffer.fish Git - matthieu/frr.git/commitdiff
lib,zebra: avoid use of ctime in monotime api
authorMark Stapp <mjs@voltanet.io>
Wed, 10 Jul 2019 14:16:59 +0000 (10:16 -0400)
committerMark Stapp <mjs@voltanet.io>
Wed, 10 Jul 2019 14:16:59 +0000 (10:16 -0400)
Replace a call to ctime with ctime_r in the monotime module;
update the callers of the monotime api.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
lib/monotime.h
zebra/zebra_vxlan.c

index 6aac966ea14a2aee8e6872ca68893a58f953f620..ca27c45dc61437242634b786940095bdc89283a9 100644 (file)
@@ -84,7 +84,10 @@ static inline int64_t monotime_until(const struct timeval *ref,
        return (int64_t)tv.tv_sec * 1000000LL + tv.tv_usec;
 }
 
-static inline char *time_to_string(time_t ts)
+/* Char buffer size for time-to-string api */
+#define MONOTIME_STRLEN 32
+
+static inline char *time_to_string(time_t ts, char *buf)
 {
        struct timeval tv;
        time_t tbuf;
@@ -92,7 +95,7 @@ static inline char *time_to_string(time_t ts)
        monotime(&tv);
        tbuf = time(NULL) - (tv.tv_sec - ts);
 
-       return ctime(&tbuf);
+       return ctime_r(&tbuf, buf);
 }
 
 #ifdef __cplusplus
index 222d91105effca91358160447007f9c8f1d10cdf..d551fa884290840ba8d7685aebadc07e978e43ca 100644 (file)
@@ -732,6 +732,7 @@ static void zvni_print_neigh(zebra_neigh_t *n, void *ctxt, json_object *json)
        bool flags_present = false;
        struct zebra_vrf *zvrf = NULL;
        struct timeval detect_start_time = {0, 0};
+       char timebuf[MONOTIME_STRLEN];
 
        zvrf = zebra_vrf_get_evpn();
        if (!zvrf)
@@ -786,19 +787,17 @@ static void zvni_print_neigh(zebra_neigh_t *n, void *ctxt, json_object *json)
 
                if (CHECK_FLAG(n->flags, ZEBRA_NEIGH_DUPLICATE)) {
                        vty_out(vty, " Duplicate, detected at %s",
-                               time_to_string(n->dad_dup_detect_time));
+                               time_to_string(n->dad_dup_detect_time,
+                                              timebuf));
                } else if (n->dad_count) {
                        monotime_since(&n->detect_start_time,
                                       &detect_start_time);
                        if (detect_start_time.tv_sec <= zvrf->dad_time) {
-                               char *buf = time_to_string(
-                                               n->detect_start_time.tv_sec);
-                               char tmp_buf[30];
-
-                               strlcpy(tmp_buf, buf, sizeof(tmp_buf));
+                               time_to_string(n->detect_start_time.tv_sec,
+                                              timebuf);
                                vty_out(vty,
                                        " Duplicate detection started at %s, detection count %u\n",
-                                       tmp_buf, n->dad_count);
+                                       timebuf, n->dad_count);
                        }
                }
        } else {
@@ -1179,6 +1178,7 @@ static void zvni_print_mac(zebra_mac_t *mac, void *ctxt, json_object *json)
        char buf2[INET6_ADDRSTRLEN];
        struct zebra_vrf *zvrf;
        struct timeval detect_start_time = {0, 0};
+       char timebuf[MONOTIME_STRLEN];
 
        zvrf = zebra_vrf_get_evpn();
        if (!zvrf)
@@ -1309,19 +1309,17 @@ static void zvni_print_mac(zebra_mac_t *mac, void *ctxt, json_object *json)
 
                if (CHECK_FLAG(mac->flags, ZEBRA_MAC_DUPLICATE)) {
                        vty_out(vty, " Duplicate, detected at %s",
-                               time_to_string(mac->dad_dup_detect_time));
+                               time_to_string(mac->dad_dup_detect_time,
+                                              timebuf));
                } else if (mac->dad_count) {
                        monotime_since(&mac->detect_start_time,
                               &detect_start_time);
                        if (detect_start_time.tv_sec <= zvrf->dad_time) {
-                               char *buf = time_to_string(
-                                               mac->detect_start_time.tv_sec);
-                               char tmp_buf[30];
-
-                               strlcpy(tmp_buf, buf, sizeof(tmp_buf));
+                               time_to_string(mac->detect_start_time.tv_sec,
+                                              timebuf);
                                vty_out(vty,
                                        " Duplicate detection started at %s, detection count %u\n",
-                                       tmp_buf, mac->dad_count);
+                                       timebuf, mac->dad_count);
                        }
                }