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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Luiz Capitulino
						Luiz Capitulino