"if (left < esl->signature_size)" is not reachable in a while loop.
But it is still valuable in case that a given signature database is
somehow corrupted. So fix the while loop condition.

Signed-off-by: AKASHI Takahiro <[email protected]>
Reported-by: Heinrich Schuchardt <[email protected]>
---
 lib/efi_loader/efi_signature.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/efi_loader/efi_signature.c b/lib/efi_loader/efi_signature.c
index 0ead10203aeb..b392e72fefcd 100644
--- a/lib/efi_loader/efi_signature.c
+++ b/lib/efi_loader/efi_signature.c
@@ -668,7 +668,7 @@ efi_sigstore_parse_siglist(struct efi_signature_list *esl)
        esd = (struct efi_signature_data *)
                        ((u8 *)esl + sizeof(*esl) + esl->signature_header_size);
 
-       while ((left > 0) && left >= esl->signature_size) {
+       while (left > 0) {
                /* Signature must exist if there is remaining data. */
                if (left < esl->signature_size) {
                        debug("Certificate is too small\n");
-- 
2.25.2

Reply via email to