@samitouri / QOSamiQemu / commits / 1d3926e271

tests/qtest/ast2700-gpio-test: Use g_strdup_printf() instead of char arrays

Older versions of gcc with -Wformat-overflow=2 don't like the usage of fixed size char arrays in this test; gcc 7.5.0 (SUSE Linux) says: ../tests/qtest/ast2700-gpio-test.c: In function ‘test_input_pins’: ../tests/qtest/ast2700-gpio-test.c:54:36: error: ‘sprintf’ may write a terminating nul past the end of the destination [-Werror=format-overflow=] sprintf(name, "gpio%c%d", c, i); ^ ../tests/qtest/ast2700-gpio-test.c:54:13: note: ‘sprintf’ output between 7 and 17 bytes into a destination of size 16 sprintf(name, "gpio%c%d", c, i); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This can't actually happen because of the limited size of the values being substituted in. However rather than require readers to check whether the arrays really have been declared large enough, we prefer to use g_strdup_printf() for this kind of string work. Reported-by: Fabiano Rosas <farosas@suse.de> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Tested-by: Fabiano Rosas <farosas@suse.de> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-id: 20260310153334.3063224-2-peter.maydell@linaro.org

Peter Maydell committed Mar 10, 2026 at 15:33 UTC 1d3926e27179bbd7b3815c8eea3aafaac22eff5e
1 file changed +1 -2
tests/qtest/ast2700-gpio-test.c
+1 -2
@@ -44,14 +44,13 @@ static void test_output_pins(const char *machine, const uint32_t base)
44 static void test_input_pins(const char *machine, const uint32_t base)
45 {
46 QTestState *s = qtest_init(machine);
47 - char name[16];
47 uint32_t offset = 0;
48 uint32_t value = 0;
49 uint32_t pin = 0;
50
51 for (char c = 'A'; c <= 'D'; c++) {
52 for (int i = 0; i < 8; i++) {
54 - sprintf(name, "gpio%c%d", c, i);
53 + g_autofree const char *name = g_strdup_printf("gpio%c%d", c, i);
54 offset = base + (pin * 4);
55 /* input direction */
56 qtest_writel(s, offset, 0);