diff --git a/monitor.c b/monitor.c index 8d05164ac2..70665bd789 100644 --- a/monitor.c +++ b/monitor.c @@ -367,16 +367,23 @@ static void do_info(Monitor *mon, const QDict *qdict, QObject **ret_data) const mon_cmd_t *cmd; const char *item = qdict_get_try_str(qdict, "item"); - if (!item) + if (!item) { + assert(monitor_ctrl_mode(mon) == 0); goto help; + } for (cmd = info_cmds; cmd->name != NULL; cmd++) { if (compare_cmd(item, cmd->name)) break; } - if (cmd->name == NULL) + if (cmd->name == NULL) { + if (monitor_ctrl_mode(mon)) { + qemu_error_new(QERR_COMMAND_NOT_FOUND, item); + return; + } goto help; + } if (monitor_handler_ported(cmd)) { cmd->mhandler.info_new(mon, ret_data); @@ -390,7 +397,12 @@ static void do_info(Monitor *mon, const QDict *qdict, QObject **ret_data) cmd->user_print(mon, *ret_data); } } else { - cmd->mhandler.info(mon); + if (monitor_ctrl_mode(mon)) { + /* handler not converted yet */ + qemu_error_new(QERR_COMMAND_NOT_FOUND, item); + } else { + cmd->mhandler.info(mon); + } } return;