lib: ecdsa: fix prevent memory leak in ecdsa_add_verify_data
authorAnton Moryakov <ant.v.moryakov@gmail.com>
Thu, 6 Feb 2025 21:47:59 +0000 (00:47 +0300)
committerTom Rini <trini@konsulko.com>
Mon, 3 Mar 2025 20:24:48 +0000 (14:24 -0600)
- Ensure `free_ctx` is called in both error and success paths.
- Fix memory leak in `ctx.signature` when `do_add` fails."

Triggers found by static analyzer Svace.

Signed-off-by: Anton Moryakov <ant.v.moryakov@gmail.com>
lib/ecdsa/ecdsa-libcrypto.c

index 1c5dde6..f0095e9 100644 (file)
@@ -363,8 +363,10 @@ int ecdsa_add_verify_data(struct image_sign_info *info, void *fdt)
        ret = prepare_ctx(&ctx, info);
        if (ret >= 0) {
                ret = do_add(&ctx, fdt, fdt_key_name, info);
-               if (ret < 0)
-                       ret = ret == -FDT_ERR_NOSPACE ? -ENOSPC : -EIO;
+               if (ret < 0) {
+                       free_ctx(&ctx);
+                       return ret == -FDT_ERR_NOSPACE ? -ENOSPC : -EIO;
+               }
        }
 
        free_ctx(&ctx);