summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjobol <jose.bollo@iot.bzh>2018-05-14 11:19:34 +0200
committerRomain Forlot <romain.forlot@iot.bzh>2018-12-13 14:12:02 +0100
commit359e7863f524eeb3eae39bf0c5f77917487b984a (patch)
tree5ff9bae9b4fb573e79d912328dc8274beaeeaa9d
parent95aaa4b0bb652c74a3515bb0dc6a2e75b11e33c6 (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>
-rw-r--r--wrap-json.c3
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;
}