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: Eric Blake <eblake@redhat.com>
Fixes: b4900c0
tests: add human format test for string output visitor
Signed-off-by: Andreas Färber <afaerber@suse.de>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
acfb23ad3d
commit
b8864245b1
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user