From 8260f23616c1a2a4e609f989a195fba7690a42ca Mon Sep 17 00:00:00 2001 From: DJ Delorie Date: Wed, 3 Apr 2019 17:49:43 -0400 Subject: [PATCH] time/tst-strftime3.c: Disable snprintf warning. snprintf will only truncate the output if the data its given is corrupted, but a truncated buffer will not match the "pristine" data's buffer, which is all we need. So just disable the warning via the DIAG macros. --- ChangeLog | 5 +++++ time/tst-strftime3.c | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/ChangeLog b/ChangeLog index 9eb0afd..b5c13e8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2019-04-03 DJ Delorie + + * time/tst-strftime3.c (tm_to_printed): Disable warning about + snprintf truncating output. + 2019-04-02 DJ Delorie * time/tst-strftime3.c: Add new Japanese era tests. Fix printf diff --git a/time/tst-strftime3.c b/time/tst-strftime3.c index 32ce0d9..eeca092 100644 --- a/time/tst-strftime3.c +++ b/time/tst-strftime3.c @@ -25,6 +25,7 @@ #include #include +#include /* These exist for the convenience of writing the test data, because zero-based vs one-based. */ @@ -440,6 +441,14 @@ tm_to_printed (struct tm *tm, char *buffer) sprintf (temp, "%d", tm->tm_wday); } + DIAG_PUSH_NEEDS_COMMENT; +#if __GNUC_PREREQ (9, 0) + /* GCC 9 warns that strncmp may truncate its output, but that's why + we're using it. When it needs to truncate, it got corrupted + data, and we only care that the string is different than valid + data, which won't truncate. */ + DIAG_IGNORE_NEEDS_COMMENT (9, "-Wformat-truncation="); +#endif snprintf (buffer, TMBUFLEN, "%04d/%02d/%02d %02d:%02d:%02d %s", tm->tm_year + 1900, tm->tm_mon + 1, @@ -448,6 +457,7 @@ tm_to_printed (struct tm *tm, char *buffer) tm->tm_min, tm->tm_sec, wn); + DIAG_POP_NEEDS_COMMENT; } static int -- 2.7.4