From: Quentin Young Date: Wed, 18 Jul 2018 16:32:07 +0000 (+0000) Subject: zebra: fix zapi fuzzing infra X-Git-Tag: frr-6.1-dev~163^2~1 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=2875801fa3ad80a8cbcfdcb6b556001d9ba83e4a;p=matthieu%2Ffrr.git zebra: fix zapi fuzzing infra Some of this stuff got broken with the introduction of pthreads. Signed-off-by: Quentin Young --- diff --git a/zebra/main.c b/zebra/main.c index c5246999fa..4c58db2736 100644 --- a/zebra/main.c +++ b/zebra/main.c @@ -349,13 +349,6 @@ int main(int argc, char **argv) /* For debug purpose. */ /* SET_FLAG (zebra_debug_event, ZEBRA_DEBUG_EVENT); */ -#if defined(HANDLE_ZAPI_FUZZING) - if (fuzzing) { - zserv_read_file(fuzzing); - exit(0); - } -#endif - /* Process the configuration file. Among other configuration * directives we can meet those installing static routes. Such * requests will not be executed immediately, but queued in @@ -391,6 +384,14 @@ int main(int argc, char **argv) /* RNH init */ zebra_rnh_init(); +#if defined(HANDLE_ZAPI_FUZZING) + if (fuzzing) { + zserv_read_file(fuzzing); + exit(0); + } +#endif + + frr_run(zebrad.master); /* Not reached... */ diff --git a/zebra/zserv.c b/zebra/zserv.c index b08da9cebd..4c90757d70 100644 --- a/zebra/zserv.c +++ b/zebra/zserv.c @@ -640,7 +640,7 @@ static int zserv_handle_client_close(struct thread *thread) * sock * client's socket file descriptor */ -static void zserv_client_create(int sock) +static struct zserv *zserv_client_create(int sock) { struct zserv *client; int i; @@ -696,6 +696,8 @@ static void zserv_client_create(int sock) /* start pthread */ frr_pthread_run(client->pthread, NULL); + + return client; } /* @@ -1025,20 +1027,10 @@ void zserv_read_file(char *input) struct zserv *client = NULL; struct thread t; - zserv_client_create(-1); - - frr_pthread_stop(client->pthread, NULL); - frr_pthread_destroy(client->pthread); - client->pthread = NULL; - - t.arg = client; - fd = open(input, O_RDONLY | O_NONBLOCK); t.u.fd = fd; - zserv_read(&t); - - close(fd); + zserv_client_create(fd); } #endif