From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KOvyG-0006JD-Dv for qemu-devel@nongnu.org; Fri, 01 Aug 2008 10:51:08 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KOvyF-0006Ho-FX for qemu-devel@nongnu.org; Fri, 01 Aug 2008 10:51:07 -0400 Received: from [199.232.76.173] (port=52190 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KOvyF-0006HY-9h for qemu-devel@nongnu.org; Fri, 01 Aug 2008 10:51:07 -0400 Received: from savannah.gnu.org ([199.232.41.3]:41239 helo=sv.gnu.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1KOvyE-0002Sf-W5 for qemu-devel@nongnu.org; Fri, 01 Aug 2008 10:51:07 -0400 Received: from cvs.savannah.gnu.org ([199.232.41.69]) by sv.gnu.org with esmtp (Exim 4.63) (envelope-from ) id 1KOvyD-000524-DX for qemu-devel@nongnu.org; Fri, 01 Aug 2008 14:51:05 +0000 Received: from aliguori by cvs.savannah.gnu.org with local (Exim 4.63) (envelope-from ) id 1KOvyC-00051d-5r for qemu-devel@nongnu.org; Fri, 01 Aug 2008 14:51:04 +0000 MIME-Version: 1.0 Errors-To: aliguori Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Anthony Liguori Message-Id: Date: Fri, 01 Aug 2008 14:51:04 +0000 Subject: [Qemu-devel] [4976] Ask password when encrypted disk image is used (Laurent Vivier) Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Revision: 4976 http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=4976 Author: aliguori Date: 2008-08-01 14:51:02 +0000 (Fri, 01 Aug 2008) Log Message: ----------- Ask password when encrypted disk image is used (Laurent Vivier) This patch repairs the management of encrypted disk images and allows to enter the password. Changelog: v2: - move read_password() before do_loadvm() - really start monitor if output is stdio. Signed-off-by: Laurent Vivier Signed-off-by: Anthony Liguori Modified Paths: -------------- trunk/console.h trunk/monitor.c trunk/vl.c Modified: trunk/console.h =================================================================== --- trunk/console.h 2008-07-29 20:08:37 UTC (rev 4975) +++ trunk/console.h 2008-08-01 14:51:02 UTC (rev 4976) @@ -160,6 +160,7 @@ does not need to include console.h */ /* monitor.c */ void monitor_init(CharDriverState *hd, int show_banner); +void monitor_start_input(void); void term_puts(const char *str); void term_vprintf(const char *fmt, va_list ap); void term_printf(const char *fmt, ...) __attribute__ ((__format__ (__printf__, 1, 2))); Modified: trunk/monitor.c =================================================================== --- trunk/monitor.c 2008-07-29 20:08:37 UTC (rev 4975) +++ trunk/monitor.c 2008-08-01 14:51:02 UTC (rev 4976) @@ -76,8 +76,6 @@ static uint8_t term_outbuf[1024]; static int term_outbuf_index; -static void monitor_start_input(void); - CPUState *mon_cpu = NULL; void term_flush(void) @@ -2659,15 +2657,13 @@ readline_handle_byte(buf[i]); } -static void monitor_start_input(void); - static void monitor_handle_command1(void *opaque, const char *cmdline) { monitor_handle_command(cmdline); monitor_start_input(); } -static void monitor_start_input(void) +void monitor_start_input(void) { readline_start("(qemu) ", 0, monitor_handle_command1, NULL); } @@ -2708,8 +2704,6 @@ hide_banner = !show_banner; qemu_chr_add_handlers(hd, term_can_read, term_read, term_event, NULL); - - readline_start("", 0, monitor_handle_command1, NULL); } /* XXX: use threads ? */ Modified: trunk/vl.c =================================================================== --- trunk/vl.c 2008-07-29 20:08:37 UTC (rev 4975) +++ trunk/vl.c 2008-08-01 14:51:02 UTC (rev 4976) @@ -5687,7 +5687,7 @@ bdrv_flags |= BDRV_O_SNAPSHOT; if (!cache) bdrv_flags |= BDRV_O_DIRECT; - if (bdrv_open2(bdrv, file, bdrv_flags, drv) < 0 || qemu_key_check(bdrv, file)) { + if (bdrv_open2(bdrv, file, bdrv_flags, drv) < 0) { fprintf(stderr, "qemu: could not open disk image %s\n", file); return -1; @@ -7975,22 +7975,14 @@ return -EPERM; } -static BlockDriverState *get_bdrv(int index) -{ - if (index > nb_drives) - return NULL; - return drives_table[index].bdrv; -} - static void read_passwords(void) { BlockDriverState *bs; int i; - for(i = 0; i < 6; i++) { - bs = get_bdrv(i); - if (bs) - qemu_key_check(bs, bdrv_get_device_name(bs)); + for(i = 0; i < nb_drives; i++) { + bs = drives_table[i].bdrv; + qemu_key_check(bs, bdrv_get_device_name(bs)); } } @@ -8159,6 +8151,7 @@ int optind; const char *r, *optarg; CharDriverState *monitor_hd; + int has_monitor; const char *monitor_device; const char *serial_devices[MAX_SERIAL_PORTS]; int serial_device_index; @@ -9023,6 +9016,8 @@ } /* Maintain compatibility with multiple stdio monitors */ + + has_monitor = 0; if (!strcmp(monitor_device,"stdio")) { for (i = 0; i < MAX_SERIAL_PORTS; i++) { const char *devname = serial_devices[i]; @@ -9035,6 +9030,7 @@ break; } } + has_monitor = 1; } if (monitor_device) { monitor_hd = qemu_chr_open(monitor_device); @@ -9043,6 +9039,7 @@ exit(1); } monitor_init(monitor_hd, !nographic); + has_monitor = 1; } for(i = 0; i < MAX_SERIAL_PORTS; i++) { @@ -9103,12 +9100,16 @@ } #endif + read_passwords(); + + if (has_monitor) + monitor_start_input(); + if (loadvm) do_loadvm(loadvm); { /* XXX: simplify init */ - read_passwords(); if (autostart) { vm_start(); }