qemu-e2k/util
Markus Armbruster cb77d1925a qemu-option: Guard against qemu_opts_set_defaults() misuse
Commit 6d4cd40 fixed qemu_opts_set_defaults() for an existing corner
case, but broke it for another one that can't be reached in current
code.

Quote from its commit message:

    I believe [opts_parse()] attempts to do the following:

        If options don't yet exist, create new options
        Else, if defaults, modify the existing options
        Else, if list->merge_lists, modify the existing options
        Else, fail

The only caller that passes true for defaults is
qemu_opts_set_defaults().

The commit message then claims:

    A straightforward call of qemu_opts_create() does exactly that.

Wrong.  When !list->merge_lists, and the option string doesn't contain
id=, and options without ID exist, then we don't actually modify the
existing options, we create new ones.

Not reachable, because we never pass lists with !list->merge_lists to
qemu_opts_set_defaults().

Guard against possible (if unlikely) future misuse with assert().

Reported-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-id: 1375428840-5275-1-git-send-email-armbru@redhat.com
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2013-08-12 09:15:37 -05:00
..
acl.c
aes.c aes: Remove unused code (NDEBUG, u16) 2013-07-27 11:22:53 +04:00
bitmap.c
bitops.c
cache-utils.c
compatfd.c
crc32c.c
cutils.c
envlist.c
error.c
event_notifier-posix.c
event_notifier-win32.c
fifo8.c
hbitmap.c
hexdump.c
host-utils.c
iov.c iov: handle EOF in iov_send_recv 2013-08-06 10:41:56 +02:00
Makefile.objs
module.c
notify.c
osdep.c
oslib-posix.c
oslib-win32.c
path.c
qemu-config.c
qemu-error.c
qemu-openpty.c
qemu-option.c qemu-option: Guard against qemu_opts_set_defaults() misuse 2013-08-12 09:15:37 -05:00
qemu-progress.c
qemu-sockets.c
qemu-thread-posix.c semaphore: fix a hangup problem under load on NetBSD hosts. 2013-08-05 11:48:00 -05:00
qemu-thread-win32.c
qemu-timer-common.c
unicode.c
uri.c