>From 2513ff5a2d0cb11edbca47d5ad6b1b5ae0c690fa Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 27 Sep 2017 16:16:43 -0700 Subject: [PATCH] duplocale-tests: use snprintf, not strncpy * modules/duplocale-tests (Depends-on): Add snprintf. * tests/test-duplocale.c (get_locale_dependent_values): Use snprintf instead of strncpy to avoid overrunning the fixed-size output buffer. --- ChangeLog | 8 ++++++++ modules/duplocale-tests | 1 + tests/test-duplocale.c | 4 ++-- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8a9bbe625..7aa6c03d7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2017-09-27 Paul Eggert + + duplocale-tests: use snprintf, not strncpy + * modules/duplocale-tests (Depends-on): Add snprintf. + * tests/test-duplocale.c (get_locale_dependent_values): + Use snprintf instead of strncpy to avoid overrunning + the fixed-size output buffer. + 2017-09-26 Bruno Haible uniname/uniname-tests: Tighten code. diff --git a/modules/duplocale-tests b/modules/duplocale-tests index baa9a6310..98f85b448 100644 --- a/modules/duplocale-tests +++ b/modules/duplocale-tests @@ -5,6 +5,7 @@ tests/macros.h Depends-on: langinfo +snprintf configure.ac: AC_CHECK_FUNCS_ONCE([duplocale uselocale strfmon_l snprintf_l nl_langinfo_l]) diff --git a/tests/test-duplocale.c b/tests/test-duplocale.c index f48fedf6a..c812f0b82 100644 --- a/tests/test-duplocale.c +++ b/tests/test-duplocale.c @@ -42,14 +42,14 @@ struct locale_dependent_values static void get_locale_dependent_values (struct locale_dependent_values *result) { + size_t ntime = sizeof result->time; strfmon (result->monetary, sizeof (result->monetary), "%n", 123.75); /* result->monetary is usually "$123.75" */ snprintf (result->numeric, sizeof (result->numeric), "%g", 3.5); /* result->numeric is usually "3,5" */ - strncpy (result->time, nl_langinfo (MON_1), sizeof result->time - 1); - result->time[sizeof result->time - 1] = '\0'; + ASSERT (snprintf (result->time, ntime, "%s", nl_langinfo (MON_1)) < ntime); /* result->time is usually "janvier" */ } -- 2.13.5