From: Andreas Färber Date: Wed, 9 Jul 2014 20:28:49 +0000 (+0200) Subject: tests: Fix unterminated string output visitor enum human string X-Git-Tag: qemu-xen-4.6.0-rc1~317 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=9e99c5fd7060267a0331d900e73fdb36047bfe0c;p=qemu-upstream-4.6-testing.git tests: Fix unterminated string output visitor enum human string The buffer was being allocated of size string length plus two. Around the string two quotes were being added, but no terminating NUL. It was then compared using g_assert_cmpstr(), resulting in fairly random assertion failures: ERROR:tests/test-string-output-visitor.c:213:test_visitor_out_enum: assertion failed (str == str_human): ("\"value1\"" == "\"value1\"\001EEEEEEEEEEEEEE\0171") There is no g_assert_cmpnstr() counterpart, so use g_strdup_printf() for safely assembling the string in the first place. Cc: Hu Tao Cc: Michael S. Tsirkin Suggested-by: Eric Blake Fixes: b4900c0 tests: add human format test for string output visitor Signed-off-by: Andreas Färber Reviewed-by: Eric Blake Reviewed-by: Hu Tao Signed-off-by: Peter Maydell --- diff --git a/tests/test-string-output-visitor.c b/tests/test-string-output-visitor.c index e89e43c3e..101fb27dd 100644 --- a/tests/test-string-output-visitor.c +++ b/tests/test-string-output-visitor.c @@ -196,16 +196,11 @@ static void test_visitor_out_enum(TestOutputVisitorData *data, for (i = 0; i < ENUM_ONE_MAX; i++) { char *str_human; - int len; visit_type_EnumOne(data->ov, &i, "unused", &err); g_assert(!err); - len = strlen(EnumOne_lookup[i]) + 2; - str_human = g_malloc0(len); - str_human[0] = '"'; - strncpy(str_human + 1, EnumOne_lookup[i], strlen(EnumOne_lookup[i])); - str_human[len - 1] = '"'; + str_human = g_strdup_printf("\"%s\"", EnumOne_lookup[i]); str = string_output_get_string(data->sov); g_assert(str != NULL);