diff options
author | midipix <writeonce@midipix.org> | 2025-06-04 20:11:22 +0000 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2025-06-04 20:11:22 +0000 |
commit | 64d692b3451a7bb8fd27793d9fd2e204d5480908 (patch) | |
tree | cd822c4189fc6cc7f146c561fa76a100d89c35fd | |
parent | cb4ee473b6e2fd3a5f26cf60f972ccfe226f4873 (diff) | |
download | perk-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.c | 17 |
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); |