I sent you (peter) something similar via email in 2021 but never heard back so just ignored, but now I'll post here as issue. This relates back to issue #30 here where I sent you a patch that was implemented with some differences. I don't recall if this bug was introduced in that first round or added later but I've simply been fixing it on each submission. I took my main patch and manually split it so only the fix issue is addressed here.
Background: in rhboot/shim-review#544 (comment)
If you have any questions about it, just email back.
FWIW it may be easier to understand that block if rewritten as:
if (PEHdr->Pe32.FileHeader.Machine != machine_type) {
if (machine_type != IMAGE_FILE_MACHINE_I386 ||
PEHdr->Pe32.FileHeader.Machine != IMAGE_FILE_MACHINE_X64 ||
!allow_64_bit()) {
return 0;
}
}
Then it’s clearer to see it’s redundant on 32-bit builds (the code that follows that does the same thing) and breaks the ALLOW_32BIT_KERNEL_ON_X64 option on 64-bit builds (since that block doesn’t allow it through to check allow_32_bit). The logic of allow_32_bit and allow_64_bit is correct.
shim-16.1-fix.patch
I sent you (peter) something similar via email in 2021 but never heard back so just ignored, but now I'll post here as issue. This relates back to issue #30 here where I sent you a patch that was implemented with some differences. I don't recall if this bug was introduced in that first round or added later but I've simply been fixing it on each submission. I took my main patch and manually split it so only the fix issue is addressed here.
Background: in rhboot/shim-review#544 (comment)
If you have any questions about it, just email back.
FWIW it may be easier to understand that block if rewritten as:
if (PEHdr->Pe32.FileHeader.Machine != machine_type) {
if (machine_type != IMAGE_FILE_MACHINE_I386 ||
PEHdr->Pe32.FileHeader.Machine != IMAGE_FILE_MACHINE_X64 ||
!allow_64_bit()) {
return 0;
}
}
Then it’s clearer to see it’s redundant on 32-bit builds (the code that follows that does the same thing) and breaks the ALLOW_32BIT_KERNEL_ON_X64 option on 64-bit builds (since that block doesn’t allow it through to check allow_32_bit). The logic of allow_32_bit and allow_64_bit is correct.
shim-16.1-fix.patch