hmp_change(): don't access DeviceEncrypted's data
It's not needed. As the device name is already known, we can replace the duplicated password prompting code by monitor_read_block_device_key(). This overly simplifies hmp_change(). Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
		
							parent
							
								
									8b7f6fbbdc
								
							
						
					
					
						commit
						eef5ad1086
					
				
							
								
								
									
										29
									
								
								hmp.c
								
								
								
								
							
							
						
						
									
										29
									
								
								hmp.c
								
								
								
								
							| 
						 | 
				
			
			@ -776,22 +776,6 @@ static void hmp_change_read_arg(Monitor *mon, const char *password,
 | 
			
		|||
    monitor_read_command(mon, 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void cb_hmp_change_bdrv_pwd(Monitor *mon, const char *password,
 | 
			
		||||
                                   void *opaque)
 | 
			
		||||
{
 | 
			
		||||
    Error *encryption_err = opaque;
 | 
			
		||||
    Error *err = NULL;
 | 
			
		||||
    const char *device;
 | 
			
		||||
 | 
			
		||||
    device = error_get_field(encryption_err, "device");
 | 
			
		||||
 | 
			
		||||
    qmp_block_passwd(device, password, &err);
 | 
			
		||||
    hmp_handle_error(mon, &err);
 | 
			
		||||
    error_free(encryption_err);
 | 
			
		||||
 | 
			
		||||
    monitor_read_command(mon, 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void hmp_change(Monitor *mon, const QDict *qdict)
 | 
			
		||||
{
 | 
			
		||||
    const char *device = qdict_get_str(qdict, "device");
 | 
			
		||||
| 
						 | 
				
			
			@ -810,17 +794,8 @@ void hmp_change(Monitor *mon, const QDict *qdict)
 | 
			
		|||
 | 
			
		||||
    qmp_change(device, target, !!arg, arg, &err);
 | 
			
		||||
    if (error_is_type(err, QERR_DEVICE_ENCRYPTED)) {
 | 
			
		||||
        monitor_printf(mon, "%s (%s) is encrypted.\n",
 | 
			
		||||
                       error_get_field(err, "device"),
 | 
			
		||||
                       error_get_field(err, "filename"));
 | 
			
		||||
        if (!monitor_get_rs(mon)) {
 | 
			
		||||
            monitor_printf(mon,
 | 
			
		||||
                    "terminal does not support password prompting\n");
 | 
			
		||||
            error_free(err);
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        readline_start(monitor_get_rs(mon), "Password: ", 1,
 | 
			
		||||
                       cb_hmp_change_bdrv_pwd, err);
 | 
			
		||||
        error_free(err);
 | 
			
		||||
        monitor_read_block_device_key(mon, device, NULL, NULL);
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    hmp_handle_error(mon, &err);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue