util/string_buffer: fix warning in tests
authorCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Mon, 16 Jul 2018 22:12:00 +0000 (15:12 -0700)
committerCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Wed, 18 Jul 2018 15:29:51 +0000 (08:29 -0700)
And also specify the maximum size when writing to static buffers. The
warning below refers to the case where "str5" could be larger than
"str5 - str4", then the strcat would have overlapping dst and src.

Compiler doesn't pick up the bound from the snprintf above, so we make
clear the bounds of str5 by using strncat() instead of strcat().

../../src/util/tests/string_buffer/string_buffer_test.cpp: In member function ‘virtual void string_buffer_string_buffer_tests_Test::TestBody()’:
../../src/util/tests/string_buffer/string_buffer_test.cpp:106:10: warning: ‘char* strcat(char*, const char*)’ accessing 81 or more bytes at offsets 48 and 128 may overlap 1 byte at offset 128 [-Wrestrict]
    strcat(str4, str5);
    ~~~~~~^~~~~~~~~~~~

Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Thomas Helland <thomashelland90@gmail.com>
src/util/tests/string_buffer/string_buffer_test.cpp

index 545f607faddae85f3e8fb5b8cd697dff2527615f..afb6dfb2a19bea22bc04bb2f4f848e1cbae828fd 100644 (file)
@@ -95,15 +95,15 @@ TEST_F(string_buffer, string_buffer_tests)
    EXPECT_TRUE(strlen(buf->buf) == 0);
 
    /* Test a string with some formatting */
-   sprintf(str4, "Testing formatting %d, %f", 100, 1.0);
+   snprintf(str4, sizeof(str4), "Testing formatting %d, %f", 100, 1.0);
    EXPECT_TRUE(_mesa_string_buffer_printf(buf, "Testing formatting %d, %f", 100, 1.0));
    EXPECT_TRUE(strcmp(buf->buf, str4) == 0);
 
    /* Compile a string with some other formatting */
-   sprintf(str5, "Testing formatting %d, %x", 100, 0xDEADBEAF);
+   snprintf(str5, sizeof(str5), "Testing formatting %d, %x", 100, 0xDEADBEAF);
 
    /* Concatenate str5 to str4 */
-   strcat(str4, str5);
+   strncat(str4, str5, sizeof(str5));
 
    /* Now use the formatted append function again */
    EXPECT_TRUE(_mesa_string_buffer_printf(buf, "Testing formatting %d, %x", 100, 0xDEADBEAF));