diff options
author | jobol <jose.bollo@iot.bzh> | 2018-05-14 11:19:34 +0200 |
---|---|---|
committer | jobol <jose.bollo@iot.bzh> | 2018-05-14 11:19:34 +0200 |
commit | d2508c89ed7f3445407b0f73f5536984445a2baa (patch) | |
tree | 5ff9bae9b4fb573e79d912328dc8274beaeeaa9d /wrap-json.c | |
parent | be8ea3517a0bc704bc1d923a6373c36f49866641 (diff) |
wrap-json: Fix bug decoding empty base64
The function 'decode_base64' was buggy because
it freed 2 times the pointer 'result'.
This came from the fact realloc frees the
pointer and return NULL when the size if 0.
Signed-off-by: jobol <jose.bollo@iot.bzh>
Diffstat (limited to 'wrap-json.c')
-rw-r--r-- | wrap-json.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/wrap-json.c b/wrap-json.c index 6c4da7b..11fdd8c 100644 --- a/wrap-json.c +++ b/wrap-json.c @@ -241,7 +241,7 @@ static int decode_base64( /* terminate */ *decoded = realloc(result, out); - if (*decoded == NULL) { + if (out && *decoded == NULL) { free(result); return wrap_json_error_out_of_memory; } @@ -1134,6 +1134,7 @@ int main() U("\"Pz8_Pz8_P2hlbGxvPj4-Pj4-Pg\"", "y", &xy[0], &xz[0]); U("{\"foo\":\"Pz8_Pz8_P2hlbGxvPj4-Pj4-Pg\"}", "{s?y}", "foo", &xy[0], &xz[0]); + U("{\"foo\":\"\"}", "{s?y}", "foo", &xy[0], &xz[0]); U("{}", "{s?y}", "foo", &xy[0], &xz[0]); return 0; } |