Skip to content

Commit

Permalink
tests: add fuzzing to visitor tests
Browse files Browse the repository at this point in the history
Perform input tests on random data.

Improvement to code coverage for qapi/string-input-visitor.c
is about 3 percentage points.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
  • Loading branch information
blueswirl committed Jan 26, 2013
1 parent 0c3c89d commit 3f0f31a
Showing 1 changed file with 49 additions and 0 deletions.
49 changes: 49 additions & 0 deletions tests/test-string-input-visitor.c
Expand Up @@ -165,6 +165,53 @@ static void test_visitor_in_enum(TestInputVisitorData *data,
data->siv = NULL;
}

/* Try to crash the visitors */
static void test_visitor_in_fuzz(TestInputVisitorData *data,
const void *unused)
{
int64_t ires;
bool bres;
double nres;
char *sres;
EnumOne eres;
Error *errp = NULL;
Visitor *v;
unsigned int i;
char buf[10000];

for (i = 0; i < 100; i++) {
unsigned int j;

j = g_test_rand_int_range(0, sizeof(buf) - 1);

buf[j] = '\0';

if (j != 0) {
for (j--; j != 0; j--) {
buf[j - 1] = (char)g_test_rand_int_range(0, 256);
}
}

v = visitor_input_test_init(data, buf);
visit_type_int(v, &ires, NULL, &errp);

v = visitor_input_test_init(data, buf);
visit_type_bool(v, &bres, NULL, &errp);
visitor_input_teardown(data, NULL);

v = visitor_input_test_init(data, buf);
visit_type_number(v, &nres, NULL, &errp);

v = visitor_input_test_init(data, buf);
visit_type_str(v, &sres, NULL, &errp);
g_free(sres);

v = visitor_input_test_init(data, buf);
visit_type_EnumOne(v, &eres, NULL, &errp);
visitor_input_teardown(data, NULL);
}
}

static void input_visitor_test_add(const char *testpath,
TestInputVisitorData *data,
void (*test_func)(TestInputVisitorData *data, const void *user_data))
Expand All @@ -189,6 +236,8 @@ int main(int argc, char **argv)
&in_visitor_data, test_visitor_in_string);
input_visitor_test_add("/string-visitor/input/enum",
&in_visitor_data, test_visitor_in_enum);
input_visitor_test_add("/string-visitor/input/fuzz",
&in_visitor_data, test_visitor_in_fuzz);

g_test_run();

Expand Down

0 comments on commit 3f0f31a

Please sign in to comment.