qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: Problem(s) with encrypted images


From: Sebastian Herbszt
Subject: [Qemu-devel] Re: Problem(s) with encrypted images
Date: Mon, 16 Jun 2008 20:14:36 +0200

2. When I start qemu, it just hangs there waiting for (assumingly) the password of the encrypted image. However I cannot find the place where the prompt actually is.

qemu_key_check in vl.c does use monitor_readline, so you should see a 
"Password:"
prompt in the monitor window (press ctrl-alt-2 to get there).

The initialization order seems to be wrong in main() (vl.c):

   for(i = 0; i < nb_drives_opt; i++)
       if (drive_init(&drives_opt[i], snapshot, machine) == -1)
           exit(1);
   ...
   *_display_init();
   ...
   monitor_init();

drive_init() got
...
if (bdrv_open2(bdrv, file, bdrv_flags, drv) < 0 || qemu_key_check(bdrv, file)) {

and qemu_key_check depends on the monitor:

   term_printf("%s is encrypted.\n", name);
   for(i = 0; i < 3; i++) {
       monitor_readline("Password: ", 1, password, sizeof(password));


Can you try this patch? It will break monitor but should read the password.

- Sebastian

--- vl.c.orig Mon Jun 16 18:07:39 2008
+++ vl.c Mon Jun 16 17:47:44 2008
@@ -5307,7 +5307,7 @@ static int drive_init(struct drive_opt *
        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;
--- monitor.c.orig Mon Jun 16 17:56:17 2008
+++ monitor.c Mon Jun 16 18:06:23 2008
@@ -2642,10 +2642,12 @@ static void term_event(void *opaque, int
    if (event != CHR_EVENT_RESET)
 return;

+/*
    if (!hide_banner)
     term_printf("QEMU %s monitor - type 'help' for more information\n",
   QEMU_VERSION);
    monitor_start_input();
+*/
}

static int is_first_init = 1;





reply via email to

[Prev in Thread] Current Thread [Next in Thread]