diff --git a/tools/start-stop-daemon.c b/tools/start-stop-daemon.c index 9f566bd1e2..4406a68f61 100644 --- a/tools/start-stop-daemon.c +++ b/tools/start-stop-daemon.c @@ -66,6 +66,12 @@ #include #endif +/* this is in zebra.h, but including that here isn't a good fit... */ +#ifndef HAVE_STRLCPY +size_t strlcpy(char *__restrict dest, + const char *__restrict src, size_t destsize); +#endif + static int testmode = 0; static int quietmode = 0; static int exitnodo = 1; @@ -749,8 +755,7 @@ static void do_stop(int signal_nr, int quietmode, int *n_killed, static void set_what_stop(const char *str) { - strncpy(what_stop, str, sizeof(what_stop)); - what_stop[sizeof(what_stop) - 1] = '\0'; + strlcpy(what_stop, str, sizeof(what_stop)); } static int run_stop_schedule(void) diff --git a/tools/subdir.am b/tools/subdir.am index f2ed2332b8..d88e4946b4 100644 --- a/tools/subdir.am +++ b/tools/subdir.am @@ -39,7 +39,7 @@ tools_gen_northbound_callbacks_LDADD = lib/libfrr.la $(LIBYANG_LIBS) tools_gen_yang_deviations_SOURCES = tools/gen_yang_deviations.c tools_gen_yang_deviations_LDADD = lib/libfrr.la $(LIBYANG_LIBS) -tools_ssd_SOURCES = tools/start-stop-daemon.c +tools_ssd_SOURCES = tools/start-stop-daemon.c lib/strlcpy.c tools_ssd_CPPFLAGS = # don't bother autoconf'ing these for a simple optional tool