diff --git a/librz/core/casm.c b/librz/core/casm.c index 3cd40ba68d..e6ab5d14c7 100644 --- a/librz/core/casm.c +++ b/librz/core/casm.c @@ -284,8 +284,13 @@ RZ_API RzCmdStatus rz_core_cpu_descs_print(RZ_NONNULL RzCore *core, RZ_NONNULL c rz_list_sort(plugin_list, (RzListComparator)rz_asm_plugin_cmp, NULL); RzListIter *it; RzAsmPlugin *ap; + bool found = false; rz_list_foreach (plugin_list, it, ap) { - if (ap->cpus && ap->get_cpu_desc && RZ_STR_EQ(plugin, ap->name)) { + if (!RZ_STR_EQ(plugin, ap->name)) { + continue; + } + found = true; + if (ap->cpus && ap->get_cpu_desc) { char **desc = ap->get_cpu_desc(); if (!desc) { rz_iterator_free(iter); @@ -296,11 +301,15 @@ RZ_API RzCmdStatus rz_core_cpu_descs_print(RZ_NONNULL RzCore *core, RZ_NONNULL c rz_cons_printf("%-15s %s", desc[i], desc[i + 1]); rz_cons_newline(); } - break; } + break; } rz_iterator_free(iter); rz_list_free(plugin_list); + if (!found) { + RZ_LOG_ERROR("Unknown asm plugin '%s'\n", plugin); + return RZ_CMD_STATUS_ERROR; + } return RZ_CMD_STATUS_OK; } diff --git a/librz/main/rz-asm.c b/librz/main/rz-asm.c index e0c277539f..0de3c024a8 100644 --- a/librz/main/rz-asm.c +++ b/librz/main/rz-asm.c @@ -637,10 +637,11 @@ RZ_API int rz_main_rz_asm(int argc, const char *argv[]) { RzCore *core = rz_core_new(); RzAsm *tmp_asm = core->rasm; core->rasm = as->a; - rz_core_cpu_descs_print(core, opt.arg); + RzCmdStatus status = rz_core_cpu_descs_print(core, opt.arg); rz_cons_flush(); core->rasm = tmp_asm; rz_core_free(core); + ret = (status == RZ_CMD_STATUS_OK) ? 0 : 1; goto beach; } case '@': diff --git a/test/db/tools/rz_asm b/test/db/tools/rz_asm index 86ce9d67c4..bc13031186 100644 --- a/test/db/tools/rz_asm +++ b/test/db/tools/rz_asm @@ -675,3 +675,12 @@ EXPECT=<