]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[efi] Fix operator precedence in autoexec network download 1694/head
authorHuzaifa Ali Zar <zar@amazon.com>
Tue, 28 Apr 2026 21:52:13 +0000 (21:52 +0000)
committerMichael Brown <mcb30@ipxe.org>
Wed, 29 Apr 2026 10:25:59 +0000 (11:25 +0100)
The != operator has higher precedence than = in C, so the expressions:

  rc = imgacquire ( ..., image ) != 0

are parsed as:

  rc = ( imgacquire ( ..., image ) != 0 )

This assigns the boolean result (0 or 1) to rc instead of the actual
return code from imgacquire().  As a result, strerror(rc) reports an
incorrect error message when debugging is enabled.

Add parentheses around each assignment to ensure rc captures the
actual return value, matching the pattern already used in
efi_autoexec_filesystem() within the same file.

Modified-by: Michael Brown <mcb30@ipxe.org>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/interface/efi/efi_autoexec.c

index 9125bfcf45615198506bc738de803a9487021faa..ab356a8860e3515f86e683ade28e3cff4a7e74e2 100644 (file)
@@ -132,10 +132,10 @@ static int efi_autoexec_network ( EFI_HANDLE handle, struct image **image ) {
        }
 
        /* Attempt download from current working URI, then from root */
-       if ( ( rc = imgacquire ( EFI_AUTOEXEC_NAME, EFI_AUTOEXEC_TIMEOUT,
-                                image ) != 0 ) &&
-            ( rc = imgacquire ( "/" EFI_AUTOEXEC_NAME, EFI_AUTOEXEC_TIMEOUT,
-                                image ) != 0 ) ) {
+       if ( ( rc = imgacquire ( EFI_AUTOEXEC_NAME, EFI_AUTOEXEC_TIMEOUT,
+                                  image ) ) != 0 ) &&
+            ( rc = imgacquire ( "/" EFI_AUTOEXEC_NAME, EFI_AUTOEXEC_TIMEOUT,
+                                  image ) ) != 0 ) ) {
                DBGC ( device, "EFI %s could not download [/]%s: %s\n",
                       efi_handle_name ( device ), EFI_AUTOEXEC_NAME,
                       strerror ( rc ) );