summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2025-06-04 20:11:22 +0000
committermidipix <writeonce@midipix.org>2025-06-04 20:11:22 +0000
commit64d692b3451a7bb8fd27793d9fd2e204d5480908 (patch)
treecd822c4189fc6cc7f146c561fa76a100d89c35fd
parentcb4ee473b6e2fd3a5f26cf60f972ccfe226f4873 (diff)
downloadperk-64d692b3451a7bb8fd27793d9fd2e204d5480908.tar.bz2
perk-64d692b3451a7bb8fd27793d9fd2e204d5480908.tar.xz
pe_cmd_ar_perform_unit_actions(): properly handle action-less invocations.
-rw-r--r--src/cmds/pe_cmd_ar.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/cmds/pe_cmd_ar.c b/src/cmds/pe_cmd_ar.c
index 9d9423b..c27388a 100644
--- a/src/cmds/pe_cmd_ar.c
+++ b/src/cmds/pe_cmd_ar.c
@@ -20,20 +20,23 @@ static int pe_cmd_ar_perform_unit_actions(
struct pe_unit_ctx * arctx = 0;
int (*pe_ar_fn)(const struct pe_archive_meta *,const char **);
- if (pe_lib_get_unit_ctx(dctx,arname,&arctx) < 0)
- return PERK_NESTED_ERROR(dctx);
-
- if (arctx->armeta == 0)
- return PERK_CUSTOM_ERROR(dctx,
- PERK_ERR_AR_NON_ARCHIVE_IMAGE);
-
if (action == PERK_DRIVER_AR_LIST_MEMBERS) {
pe_ar_fn = pe_ar_list_members;
} else if (action == PERK_DRIVER_AR_PRINT_ARCHIVE) {
pe_ar_fn = pe_ar_print_members;
+
+ } else {
+ return 0;
}
+ if (pe_lib_get_unit_ctx(dctx,arname,&arctx) < 0)
+ return PERK_NESTED_ERROR(dctx);
+
+ if (arctx->armeta == 0)
+ return PERK_CUSTOM_ERROR(dctx,
+ PERK_ERR_AR_NON_ARCHIVE_IMAGE);
+
if (pe_ar_fn(arctx->armeta,members) < 0) {
pe_lib_free_unit_ctx(arctx);
return PERK_NESTED_ERROR(dctx);