This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [v1] Add Reiwa era tests to time/tst-strftime3.c
- From: DJ Delorie <dj at redhat dot com>
- To: Steve Ellcey <sellcey at marvell dot com>
- Cc: libc-alpha at sourceware dot org, tamuki at linet dot gr dot jp, digitalfreak at lingonborough dot com
- Date: Tue, 02 Apr 2019 20:08:17 -0400
- Subject: Re: [v1] Add Reiwa era tests to time/tst-strftime3.c
Steve Ellcey <sellcey@marvell.com> writes:
> I am building ToT glibc with ToT gcc and during glibc testing I got
> this error:
Yup, Arjun noticed as well when trying in Rawhide. It's a wierd
warning, too, because the *point* of snprintf is that it truncates the
output.
Arjun and I talked about a few options, but I think the simplest is to
just shut gcc up... alternatives include far bigger buffers with
sprintf, or xasprintf... but what's the point of snprintf at all then?
diff --git a/time/tst-strftime3.c b/time/tst-strftime3.c
index 32ce0d93e2..2a4c3ea398 100644
--- a/time/tst-strftime3.c
+++ b/time/tst-strftime3.c
@@ -430,16 +430,21 @@ static void
tm_to_printed (struct tm *tm, char *buffer)
{
const char *wn;
- char temp[50];
+ char temp[28];
if (0 <= tm->tm_wday && tm->tm_wday <= 6)
wn = weekday_name[tm->tm_wday];
else
{
wn = temp;
+ /* 64-bit values need at most 21 bytes, including NUL. */
sprintf (temp, "%d", tm->tm_wday);
}
+ /* This will be at most 4+2+2+2+2+2+7+20 = 41 bytes long, including
+ NUL. GCC warns if snprintf may truncate the output, which is why
+ we're using snprintf... */
+#pragma GCC diagnostic ignored "-Wformat-truncation="
snprintf (buffer, TMBUFLEN, "%04d/%02d/%02d %02d:%02d:%02d %s",
tm->tm_year + 1900,
tm->tm_mon + 1,