mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
qemu-img: Fix amend option parse error handling
qemu_opts_del(opts) dereferences opts->list, which is the old amend_opts pointer that can be dangling after executing qemu_opts_append(amend_opts, bs->drv->create_opts) and cause use-after-free. Fix the potential use-after-free by moving the qemu_opts_del() call before the qemu_opts_append() call. Signed-off-by: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp> Message-ID: <20251023-iotests-v1-1-fab143ca4c2f@rsg.ci.i.u-tokyo.ac.jp> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
committed by
Kevin Wolf
parent
23798d3f88
commit
f00bcc8337
+1
-1
@@ -4597,9 +4597,9 @@ static int img_amend(const img_cmd_t *ccmd, int argc, char **argv)
|
||||
amend_opts = qemu_opts_append(amend_opts, bs->drv->amend_opts);
|
||||
opts = qemu_opts_create(amend_opts, NULL, 0, &error_abort);
|
||||
if (!qemu_opts_do_parse(opts, options, NULL, &err)) {
|
||||
qemu_opts_del(opts);
|
||||
/* Try to parse options using the create options */
|
||||
amend_opts = qemu_opts_append(amend_opts, bs->drv->create_opts);
|
||||
qemu_opts_del(opts);
|
||||
opts = qemu_opts_create(amend_opts, NULL, 0, &error_abort);
|
||||
if (qemu_opts_do_parse(opts, options, NULL, NULL)) {
|
||||
error_append_hint(&err,
|
||||
|
||||
Reference in New Issue
Block a user