From: jobol Date: Mon, 14 May 2018 09:19:34 +0000 (+0200) Subject: wrap-json: Fix bug decoding empty base64 X-Git-Tag: 6.99.3~32 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=commitdiff_plain;h=359e7863f524eeb3eae39bf0c5f77917487b984a;p=src%2Flibafb-helpers.git 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 --- 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; }