mirror of https://github.com/xqemu/xqemu.git
Add image format option in monitor for removable media
(Chris Wright) CVE-2008-1945 git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4747 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
94451178b6
commit
2ecea9b8de
20
monitor.c
20
monitor.c
|
@ -396,18 +396,26 @@ static void do_eject(int force, const char *filename)
|
||||||
eject_device(bs, force);
|
eject_device(bs, force);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void do_change_block(const char *device, const char *filename)
|
static void do_change_block(const char *device, const char *filename, const char *fmt)
|
||||||
{
|
{
|
||||||
BlockDriverState *bs;
|
BlockDriverState *bs;
|
||||||
|
BlockDriver *drv = NULL;
|
||||||
|
|
||||||
bs = bdrv_find(device);
|
bs = bdrv_find(device);
|
||||||
if (!bs) {
|
if (!bs) {
|
||||||
term_printf("device not found\n");
|
term_printf("device not found\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (fmt) {
|
||||||
|
drv = bdrv_find_format(fmt);
|
||||||
|
if (!drv) {
|
||||||
|
term_printf("invalid format %s\n", fmt);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (eject_device(bs, 0) < 0)
|
if (eject_device(bs, 0) < 0)
|
||||||
return;
|
return;
|
||||||
bdrv_open(bs, filename, 0);
|
bdrv_open2(bs, filename, 0, drv);
|
||||||
qemu_key_check(bs, filename);
|
qemu_key_check(bs, filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -426,12 +434,12 @@ static void do_change_vnc(const char *target)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void do_change(const char *device, const char *target)
|
static void do_change(const char *device, const char *target, const char *fmt)
|
||||||
{
|
{
|
||||||
if (strcmp(device, "vnc") == 0) {
|
if (strcmp(device, "vnc") == 0) {
|
||||||
do_change_vnc(target);
|
do_change_vnc(target);
|
||||||
} else {
|
} else {
|
||||||
do_change_block(device, target);
|
do_change_block(device, target, fmt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1339,8 +1347,8 @@ static term_cmd_t term_cmds[] = {
|
||||||
"", "quit the emulator" },
|
"", "quit the emulator" },
|
||||||
{ "eject", "-fB", do_eject,
|
{ "eject", "-fB", do_eject,
|
||||||
"[-f] device", "eject a removable medium (use -f to force it)" },
|
"[-f] device", "eject a removable medium (use -f to force it)" },
|
||||||
{ "change", "BF", do_change,
|
{ "change", "BFs?", do_change,
|
||||||
"device filename", "change a removable medium" },
|
"device filename [format]", "change a removable medium, optional format" },
|
||||||
{ "screendump", "F", do_screen_dump,
|
{ "screendump", "F", do_screen_dump,
|
||||||
"filename", "save screen into PPM image 'filename'" },
|
"filename", "save screen into PPM image 'filename'" },
|
||||||
{ "logfile", "F", do_logfile,
|
{ "logfile", "F", do_logfile,
|
||||||
|
|
Loading…
Reference in New Issue