17.03.2011 16:51, Markus Armbruster wrote: > Michael Tokarev <m...@tls.msk.ru> writes: > >> Trivial patch. I've sent it yesterday but somehow it didn't >> reach the list. >> >> This fixes the problem when qemu continues even if -drive specification >> is somehow invalid, resulting in a mess. Applicable for both current >> master and for stable-0.14 (and 0.13 and 0.12 as well). > > Note patch doesn't apply to 0.12 and 0.13.
Yes it doesn't, since to 0.14 the code changed. What I mean is that the same problem exist in earlier versions too. I'll apply a change of this effect to 0.12.5 as used in Debian now, something like the one below. [] > What about all the other unchecked drive_add() calls in main()? These are much less worrisome - they fail only of the internal definitions of options are incorrect, which should never happen. For example: case QEMU_OPTION_hdd: drive_add(IF_DEFAULT, popt->index - QEMU_OPTION_hda, optarg, HD_OPTS); There, optarg is just a filename, and HD_OPTS is defined like this: #define HD_OPTS "media=disk" So it should not fail when parsing options, only when trying to interpret and actually open the filename, which happens much later in the game. Thanks, /mjt For 0.12 and 0.13: diff --git a/vl.c b/vl.c index 77677e8..069a1df 100644 --- a/vl.c +++ b/vl.c @@ -5025,7 +5025,8 @@ int main(int argc, char **argv, char **envp) drive_add(optarg, HD_ALIAS, popt->index - QEMU_OPTION_hda); break; case QEMU_OPTION_drive: - drive_add(NULL, "%s", optarg); + if (drive_add(NULL, "%s", optarg) == NULL) + exit(1); break; case QEMU_OPTION_set: if (qemu_set_option(optarg) != 0)