After the malloc of tmp_files and before its value is recorded an early
exit will need to free tmp_files to prevent leaking that memory.

This issue was found by Smatch.

Signed-off-by: Andrew Goodbody <[email protected]>
---
 lib/efi_loader/efi_capsule.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lib/efi_loader/efi_capsule.c b/lib/efi_loader/efi_capsule.c
index 
f19e78ae9d1e250f7bf8362f043877c6d10a9675..31b47a20186e036f6852c6baa4f353a5d7b97632
 100644
--- a/lib/efi_loader/efi_capsule.c
+++ b/lib/efi_loader/efi_capsule.c
@@ -1096,8 +1096,10 @@ static efi_status_t efi_capsule_scan_dir(u16 ***files, 
unsigned int *num)
        while (1) {
                tmp_size = dirent_size;
                ret = EFI_CALL((*dirh->read)(dirh, &tmp_size, dirent));
-               if (ret != EFI_SUCCESS)
+               if (ret != EFI_SUCCESS) {
+                       free(tmp_files);
                        goto err;
+               }
                if (!tmp_size)
                        break;
 

---
base-commit: 8d22c596c6f82132c006ba89481275c60b5b0e2d
change-id: 20251003-efi_capsule-48cd72edc60a

Best regards,
-- 
Andrew Goodbody <[email protected]>

Reply via email to