twister

HTTP fault injector for testing
Log | Files | Refs | README | LICENSE

commit 90b191290d18ca0a8e4bf2cf85597db06d65b5b2
parent d1afe98957cae44bca603ffc14267cce64de5cff
Author: Marcello Stanisci <stanisci.m@gmail.com>
Date:   Sat, 15 Jun 2019 00:01:35 +0200

Avoid asserting upon malformed messages.

Diffstat:
Msrc/twister/taler-twister-service.c | 62+++++++++++++++++++++++++++++++++++++++++---------------------
1 file changed, 41 insertions(+), 21 deletions(-)

diff --git a/src/twister/taler-twister-service.c b/src/twister/taler-twister-service.c @@ -2632,13 +2632,17 @@ handle_modify_path_dl (void *cls, tailsize = ntohs (src->header.size) - sizeof (*src); - GNUNET_assert - (tailsize == GNUNET_STRINGS_buffer_tokenize - ((const char *) &src[1], - tailsize, - 2, - &payload_path, - &payload_value)); + if (tailsize != GNUNET_STRINGS_buffer_tokenize + ((const char *) &src[1], + tailsize, + 2, + &payload_path, + &payload_value)) + { + GNUNET_break_op (0); + GNUNET_SERVICE_client_drop (c); + return; + } modify_path_dl = GNUNET_strdup (payload_path); modify_value = GNUNET_strdup (payload_value); @@ -2694,12 +2698,17 @@ handle_flip_path_dl (void *cls, tailsize = ntohs (src->header.size) - sizeof (*src); - GNUNET_assert - (tailsize == GNUNET_STRINGS_buffer_tokenize + if (tailsize == GNUNET_STRINGS_buffer_tokenize ((const char *) &src[1], tailsize, 1, - &payload)); + &payload)) + { + GNUNET_break_op (0); + GNUNET_SERVICE_client_drop (c); + return; + } + flip_path_dl = GNUNET_strdup (payload); send_acknowledgement (c); } @@ -2746,11 +2755,17 @@ handle_flip_path_ul (void *cls, tailsize = ntohs (src->header.size) - sizeof (*src); - GNUNET_assert - (tailsize == GNUNET_STRINGS_buffer_tokenize ((char *) &src[1], - tailsize, - 1, - &payload)); + if (tailsize == GNUNET_STRINGS_buffer_tokenize + ((const char *) &src[1], + tailsize, + 1, + &payload)) + { + GNUNET_break_op (0); + GNUNET_SERVICE_client_drop (c); + return; + } + flip_path_ul = GNUNET_strdup (payload); send_acknowledgement (c); } @@ -2785,12 +2800,17 @@ handle_delete_path (void *cls, tailsize = ntohs (src->header.size) - sizeof (*src); - GNUNET_assert - (tailsize == GNUNET_STRINGS_buffer_tokenize - ((const char *) &src[1], - tailsize, - 1, - &payload)); + if (tailsize == GNUNET_STRINGS_buffer_tokenize + ((const char *) &src[1], + tailsize, + 1, + &payload)) + { + GNUNET_break_op (0); + GNUNET_SERVICE_client_drop (c); + return; + } + delete_path = GNUNET_strdup (payload); send_acknowledgement (c);