This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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,


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]