vasnprintf-extra-tests: Fix test bug

Bruno Haible via Gnulib discussion list <[email protected]> Tue, 14 Jul 2026 19:13:15 +0200
Newsgroups gmane.comp.lib.gnulib.bugs
Message-ID <4631766.N7aMVyhfb1@cagnes>
Running a testdir created with gnulib-tool option '--with-longrunning-tests'
on Solaris 11 OmniOS, I see the test-vasnprintf-big test fail:

abort at test-vasnprintf-big.c:125

I don't have gdb on that machine. So I reproduced it on Solaris 11 OpenIndiana
from 2017. Here, I see the test failure outside of gdb, but no failure
under gdb. Which smells like uninitialized values or data...

So I transported the Solaris 11 OpenIndiana configuration results
(`grep printf config.cache`) to a Linux machine, recompiled the testdir
there, and ran the test under valgrind. valgrind reported:

==2134082== Conditional jump or move depends on uninitialised value(s)
==2134082==    at 0x4855178: strlen (vg_replace_strmem.c:506)
==2134082==    by 0x402F80: vasnprintf (vasnprintf.c:3137)
==2134082==    by 0x40273E: asnprintf (asnprintf.c:29)
==2134082==    by 0x401689: main (test-vasnprintf-big.c:116)

Bingo! Here's the fix:


2026-07-14  Bruno Haible  <[email protected]>

	vasnprintf-extra-tests: Fix test bug.
	* tests/test-vasnprintf-big.c (main): Properly NUL-terminate the second
	string.

diff --git a/tests/test-vasnprintf-big.c b/tests/test-vasnprintf-big.c
index a9969e18c7..1ff043a105 100644
--- a/tests/test-vasnprintf-big.c
+++ b/tests/test-vasnprintf-big.c
@@ -110,7 +110,7 @@ main ()
             if (s2 != NULL)
               {
                 memset (s2, 'b', n2);
-                s1[n1] = '\0';
+                s2[n2] = '\0';
 
                 size_t len;
                 char *s = asnprintf (NULL, &len, "x%sy%sz", s1, s2);