efi_loader: fix unreachable statement in efi_sigstore_parse_siglist
authorAKASHI Takahiro <takahiro.akashi@linaro.org>
Tue, 21 Apr 2020 00:38:57 +0000 (09:38 +0900)
committerHeinrich Schuchardt <xypron.glpk@gmx.de>
Mon, 4 May 2020 10:26:11 +0000 (12:26 +0200)
"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.

Reported-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
lib/efi_loader/efi_signature.c

index 150ce41f366124805959e6ecaef12e9bbef339d4..4ad818d5eee2c2d365f941a9c41af10c4fc24d47 100644 (file)
@@ -667,7 +667,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");