On Tue, Mar 24, 2020 at 12:12:16PM +0000, Peter Maydell wrote: > If qemu_find_file() doesn't find the BIOS it returns NULL; we were > passing that unchecked through to load_elf(), which assumes a non-NULL > pointer and may misbehave. In practice it fails with a weird message: > > $ qemu-system-ppc -M ppce500 -display none -kernel nonesuch > Bad address > qemu-system-ppc: could not load firmware '(null)' > > Handle the failure case better: > > $ qemu-system-ppc -M ppce500 -display none -kernel nonesuch > qemu-system-ppc: could not find firmware/kernel file 'nonesuch' > > Spotted by Coverity (CID 1238954). > > Signed-off-by: Peter Maydell Applied to ppc-for-5.0, thanks. > --- > hw/ppc/e500.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c > index 854cd3ac465..0d1f41197cf 100644 > --- a/hw/ppc/e500.c > +++ b/hw/ppc/e500.c > @@ -1047,6 +1047,10 @@ void ppce500_init(MachineState *machine) > } > > filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, payload_name); > + if (!filename) { > + error_report("could not find firmware/kernel file '%s'", payload_name); > + exit(1); > + } > > payload_size = load_elf(filename, NULL, NULL, NULL, > &bios_entry, &loadaddr, NULL, NULL, -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson