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:
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);