]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[efi] Fix Coverity warning about unintended sign extension
authorMichael Brown <mcb30@ipxe.org>
Tue, 19 Dec 2023 16:56:34 +0000 (16:56 +0000)
committerMichael Brown <mcb30@ipxe.org>
Tue, 19 Dec 2023 16:56:34 +0000 (16:56 +0000)
The result of multiplying a uint16_t by another uint16_t will be a
signed int.  Comparing this against a size_t will perform an unwanted
sign extension.

Fix by explicitly casting e_phnum to an unsigned int, thereby matching
the data type used for the loop index variable (and avoiding the
unwanted sign extension).

This mirrors wimboot commit 15f6162 ("[efi] Fix Coverity warning about
unintended sign extension").

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/util/elf2efi.c

index 3bf6cbf9e2920131a92b267f45893ac948601940..29e4f24aba881e731f1b775d5eb3716af23fcd29 100644 (file)
@@ -440,8 +440,8 @@ static void read_elf_file ( const char *name, struct elf_file *elf ) {
 
        /* Check program headers */
        if ( ( elf->len < ehdr->e_phoff ) ||
-            ( ( elf->len - ehdr->e_phoff ) < ( ehdr->e_phnum *
-                                               ehdr->e_phentsize ) ) ) {
+            ( ( elf->len - ehdr->e_phoff ) <
+              ( ( ( unsigned int ) ehdr->e_phnum ) * ehdr->e_phentsize ) ) ) {
                eprintf ( "ELF program headers outside file in %s\n", name );
                exit ( 1 );
        }