Skip to content
Snippets Groups Projects
Commit 9e99c5fd authored by Andreas Färber's avatar Andreas Färber Committed by Peter Maydell
Browse files

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 <hutao@cn.fujitsu.com>
Cc: Michael S. Tsirkin <mst@redhat.com>
Suggested-by: default avatarEric Blake <eblake@redhat.com>
Fixes: b4900c0e tests: add human format test for string output visitor
Signed-off-by: default avatarAndreas Färber <afaerber@suse.de>
Reviewed-by: default avatarEric Blake <eblake@redhat.com>
Reviewed-by: default avatarHu Tao <hutao@cn.fujitsu.com>
Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
parent 675879f6
No related branches found
No related tags found
No related merge requests found
......@@ -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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment