On 2026-07-25 19:40, Bruno Haible wrote:
Paul Eggert wrote:
+#if defined __FILC__
+  if (lenbuf > INT_MAX)
+    lenbuf = INT_MAX;
+#endif

... Should Fil-C be listed as
buggy in doc/posix-functions/snprintf.texi,
doc/posix-functions/vsnprintf.texi, next to other platforms that
mishandle the sizes INT_MAX + 1u (Solaris, z/OS) or INT_MAX + 2u
(FreeBSD, OpenBSD, NetBSD, macOS)?

Yes. When lenbuf has the value INT_MAX + 1, the vasnprintf call fails;
when it has the value INT_MAX, the vasnprintf call succeeds.

I'm a little puzzled, as my question was about snprintf and vsnprintf, not about vasnprintf. However, assuming that you meant snprintf and vasnprintf I installed the attached patch. As the patch mentions I wasn't sure where to put Fil-C (and z/OS) in the Supported Platforms list but I gave it a guess.


Something like the attacheded untest patch, perhaps, which I stole from
lib/vasnprintf.c?

No, none of the three parts would work.

Oh, I see now see a mistake in my patch. I thought those were calls to snprintf and vsnprintf, but they are actually calls to a vasnprintf-like function.

But I'm still puzzled. I thought vasnprintf was supplied by Gnulib and so does not have the INT_MAX limitation. If so, why limit sizes to INT_MAX when calling vasnprintf?

Because of the Fil-C problem you mention (that I assume is actually with snprintf and vsnprintf), should lib/vasnprintf.c's USE_SNPRINTF be 0 if Lib-C is in use? I'm thinking that would work around the Lib-C bug more generally, without the need for INT_MAX #ifdefs in callers.
From cf2d119406a4c5bbf741a505a397d7f5dae0e216 Mon Sep 17 00:00:00 2001
From: Paul Eggert <[email protected]>
Date: Sun, 26 Jul 2026 11:43:06 -0700
Subject: [PATCH] snprintf, vsnprintf: update doc

* doc/gnulib-intro.texi (Supported Platforms):
Also mention z/OS, Fil-C.  Not sure where they should be listed
but I gave it a guess.
* doc/posix-functions/snprintf.texi (snprintf):
* doc/posix-functions/vsnprintf.texi (vsnprintf):
Also mention Fil-C bug.
---
 ChangeLog                          | 10 ++++++++++
 doc/gnulib-intro.texi              |  4 ++++
 doc/posix-functions/snprintf.texi  |  2 +-
 doc/posix-functions/vsnprintf.texi |  2 +-
 4 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 7a5d11b2c9..8fb1fccc2c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2026-07-26  Paul Eggert  <[email protected]>
+
+	snprintf, vsnprintf: update doc
+	* doc/gnulib-intro.texi (Supported Platforms):
+	Also mention z/OS, Fil-C.  Not sure where they should be listed
+	but I gave it a guess.
+	* doc/posix-functions/snprintf.texi (snprintf):
+	* doc/posix-functions/vsnprintf.texi (vsnprintf):
+	Also mention Fil-C bug.
+
 2026-07-25  Bruno Haible  <[email protected]>
 
 	tests: Avoid some runtime errors with Fil-C.
diff --git a/doc/gnulib-intro.texi b/doc/gnulib-intro.texi
index b7375f2059..8e94c8dfd5 100644
--- a/doc/gnulib-intro.texi
+++ b/doc/gnulib-intro.texi
@@ -197,6 +197,8 @@ glibc on kFreeBSD is rarely tested.
 @item
 @c There is Alpine Linux 3.19, and also musl-gcc on Ubuntu.
 musl libc on Linux is occasionally tested.
+@item
+Fil-C on Linux is occasionally tested.
 @end itemize
 @item
 macOS@.  In versions 12.5, it's occasionally tested.  In version
@@ -238,6 +240,8 @@ The versions of Windows that are supported are Windows 10 and newer.
 @item
 GNU Hurd 0.9 is rarely tested.
 @item
+z/OS is not tested.
+@item
 Minix 3.3.0 is no longer tested.
 @item
 Haiku is no longer tested.
diff --git a/doc/posix-functions/snprintf.texi b/doc/posix-functions/snprintf.texi
index e05b89ce49..23dd6704fa 100644
--- a/doc/posix-functions/snprintf.texi
+++ b/doc/posix-functions/snprintf.texi
@@ -140,7 +140,7 @@ Portability problems not fixed by Gnulib:
 @item
 This function fails if the buffer size exceeds @code{INT_MAX},
 even if the resulting string length would fit in @code{int}:
-NetBSD, Solaris, z/OS.
+NetBSD, Solaris, z/OS, Fil-C.
 @item
 This function fails if the buffer size exceeds @code{INT_MAX + 1u},
 even if the resulting string length would fit in @code{int}:
diff --git a/doc/posix-functions/vsnprintf.texi b/doc/posix-functions/vsnprintf.texi
index 27f3efc5d8..8a6ca05706 100644
--- a/doc/posix-functions/vsnprintf.texi
+++ b/doc/posix-functions/vsnprintf.texi
@@ -138,7 +138,7 @@ Portability problems not fixed by Gnulib:
 @item
 This function fails if the buffer size exceeds @code{INT_MAX},
 even if the resulting string length would fit in @code{int}:
-NetBSD, Solaris, z/OS.
+NetBSD, Solaris, z/OS, Fil-C.
 @item
 This function fails if the buffer size exceeds @code{INT_MAX + 1u},
 even if the resulting string length would fit in @code{int}:
-- 
2.53.0

Reply via email to