Diff for /qemu/monitor.c between versions 1.1.1.7 and 1.1.1.8

version 1.1.1.7, 2018/04/24 16:50:47 version 1.1.1.8, 2018/04/24 16:56:42
Line 76  static uint8_t term_outbuf[1024]; Line 76  static uint8_t term_outbuf[1024];
 static int term_outbuf_index;  static int term_outbuf_index;
   
 static void monitor_start_input(void);  static void monitor_start_input(void);
   static void monitor_readline(const char *prompt, int is_password,
                                char *buf, int buf_size);
   
 static CPUState *mon_cpu = NULL;  static CPUState *mon_cpu = NULL;
   
Line 433  static void do_change_block(const char * Line 435  static void do_change_block(const char *
     if (eject_device(bs, 0) < 0)      if (eject_device(bs, 0) < 0)
         return;          return;
     bdrv_open2(bs, filename, 0, drv);      bdrv_open2(bs, filename, 0, drv);
     qemu_key_check(bs, filename);      monitor_read_bdrv_key(bs);
 }  }
   
 static void do_change_vnc(const char *target, const char *arg)  static void do_change_vnc(const char *target, const char *arg)
Line 494  static void do_stop(void) Line 496  static void do_stop(void)
     vm_stop(EXCP_INTERRUPT);      vm_stop(EXCP_INTERRUPT);
 }  }
   
   static void encrypted_bdrv_it(void *opaque, BlockDriverState *bs)
   {
       int *err = opaque;
   
       if (bdrv_key_required(bs))
           *err = monitor_read_bdrv_key(bs);
       else
           *err = 0;
   }
   
 static void do_cont(void)  static void do_cont(void)
 {  {
     vm_start();      int err = 0;
   
       bdrv_iterate(encrypted_bdrv_it, &err);
       /* only resume the vm if all keys are set and valid */
       if (!err)
           vm_start();
 }  }
   
 #ifdef CONFIG_GDBSTUB  #ifdef CONFIG_GDBSTUB
Line 2679  static void file_completion(const char * Line 2696  static void file_completion(const char *
     closedir(ffs);      closedir(ffs);
 }  }
   
 static void block_completion_it(void *opaque, const char *name)  static void block_completion_it(void *opaque, BlockDriverState *bs)
 {  {
       const char *name = bdrv_get_device_name(bs);
     const char *input = opaque;      const char *input = opaque;
   
     if (input[0] == '\0' ||      if (input[0] == '\0' ||
Line 2891  static void monitor_readline_cb(void *op Line 2909  static void monitor_readline_cb(void *op
     monitor_readline_started = 0;      monitor_readline_started = 0;
 }  }
   
 void monitor_readline(const char *prompt, int is_password,  static void monitor_readline(const char *prompt, int is_password,
                       char *buf, int buf_size)                               char *buf, int buf_size)
 {  {
     int i;      int i;
     int old_focus[MAX_MON];      int old_focus[MAX_MON];
Line 2922  void monitor_readline(const char *prompt Line 2940  void monitor_readline(const char *prompt
                 monitor_hd[i]->focus = old_focus[i];                  monitor_hd[i]->focus = old_focus[i];
     }      }
 }  }
   
   int monitor_read_bdrv_key(BlockDriverState *bs)
   {
       char password[256];
       int i;
   
       if (!bdrv_is_encrypted(bs))
           return 0;
   
       term_printf("%s (%s) is encrypted.\n", bdrv_get_device_name(bs),
                   bdrv_get_encrypted_filename(bs));
       for(i = 0; i < 3; i++) {
           monitor_readline("Password: ", 1, password, sizeof(password));
           if (bdrv_set_key(bs, password) == 0)
               return 0;
           term_printf("invalid password\n");
       }
       return -EPERM;
   }

Removed from v.1.1.1.7  
changed lines
  Added in v.1.1.1.8


unix.superglobalmegacorp.com