diff options
-rw-r--r-- | src/lib/json/json_helper.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/lib/json/json_helper.c b/src/lib/json/json_helper.c index 7e1d239f7..b6965e080 100644 --- a/src/lib/json/json_helper.c +++ b/src/lib/json/json_helper.c | |||
@@ -55,7 +55,7 @@ parse_fixed_data (void *cls, | |||
55 | struct GNUNET_JSON_Specification *spec) | 55 | struct GNUNET_JSON_Specification *spec) |
56 | { | 56 | { |
57 | const char *enc; | 57 | const char *enc; |
58 | unsigned int len; | 58 | size_t len; |
59 | 59 | ||
60 | if (NULL == (enc = json_string_value (root))) | 60 | if (NULL == (enc = json_string_value (root))) |
61 | { | 61 | { |
@@ -63,6 +63,11 @@ parse_fixed_data (void *cls, | |||
63 | return GNUNET_SYSERR; | 63 | return GNUNET_SYSERR; |
64 | } | 64 | } |
65 | len = strlen (enc); | 65 | len = strlen (enc); |
66 | if (len >= SIZE_MAX / 5) | ||
67 | { | ||
68 | GNUNET_break_op (0); | ||
69 | return GNUNET_SYSERR; | ||
70 | } | ||
66 | if (((len * 5) / 8) != spec->ptr_size) | 71 | if (((len * 5) / 8) != spec->ptr_size) |
67 | { | 72 | { |
68 | GNUNET_break_op (0); | 73 | GNUNET_break_op (0); |
@@ -279,7 +284,7 @@ GNUNET_JSON_spec_string (const char *name, | |||
279 | { | 284 | { |
280 | struct GNUNET_JSON_Specification ret = { | 285 | struct GNUNET_JSON_Specification ret = { |
281 | .parser = &parse_string, | 286 | .parser = &parse_string, |
282 | .field = name, | 287 | .field = name, |
283 | .ptr = strptr | 288 | .ptr = strptr |
284 | }; | 289 | }; |
285 | 290 | ||