diff options
author | Marcello Stanisci <stanisci.m@gmail.com> | 2019-06-15 00:01:35 +0200 |
---|---|---|
committer | Marcello Stanisci <stanisci.m@gmail.com> | 2019-06-15 00:01:35 +0200 |
commit | 90b191290d18ca0a8e4bf2cf85597db06d65b5b2 (patch) | |
tree | ddf60c191a4f7e6b4438a4c8cafc4673fce6c732 | |
parent | d1afe98957cae44bca603ffc14267cce64de5cff (diff) | |
download | twister-90b191290d18ca0a8e4bf2cf85597db06d65b5b2.tar.gz twister-90b191290d18ca0a8e4bf2cf85597db06d65b5b2.tar.bz2 twister-90b191290d18ca0a8e4bf2cf85597db06d65b5b2.zip |
Avoid asserting upon malformed messages.
-rw-r--r-- | src/twister/taler-twister-service.c | 62 |
1 files changed, 41 insertions, 21 deletions
diff --git a/src/twister/taler-twister-service.c b/src/twister/taler-twister-service.c index 2e82b1f..b891715 100644 --- 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); |