diff options
author | Timo Teräs <timo.teras@iki.fi> | 2021-08-03 21:21:09 +0300 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2021-08-03 21:21:43 +0300 |
commit | aa44cfac05bb4bd6f336ebbfd7b26deca8a19075 (patch) | |
tree | dbfb586e5ef9ffebeb4362bcff67e1b155706fc8 | |
parent | a0e59e089786e0203de62bc5f9fc02f5e04ad3b1 (diff) | |
download | apk-tools-aa44cfac05bb4bd6f336ebbfd7b26deca8a19075.tar.gz apk-tools-aa44cfac05bb4bd6f336ebbfd7b26deca8a19075.tar.bz2 apk-tools-aa44cfac05bb4bd6f336ebbfd7b26deca8a19075.tar.xz apk-tools-aa44cfac05bb4bd6f336ebbfd7b26deca8a19075.zip |
extract: fix extracting untrusted package
-rw-r--r-- | src/app_extract.c | 3 | ||||
-rw-r--r-- | src/extract_v2.c | 6 |
2 files changed, 6 insertions, 3 deletions
diff --git a/src/app_extract.c b/src/app_extract.c index 57d40fe..75034bf 100644 --- a/src/app_extract.c +++ b/src/app_extract.c @@ -141,8 +141,11 @@ static int extract_v3_meta(struct apk_extract_ctx *ectx, struct adb *db) static int extract_file(struct apk_extract_ctx *ectx, const struct apk_file_info *fi, struct apk_istream *is) { struct extract_ctx *ctx = container_of(ectx, struct extract_ctx, ectx); + struct apk_out *out = &ctx->ac->out; int r; + apk_dbg2(out, "%s", fi->name); + if (fi->uvol_name) return apk_extract_volume(ectx->ac, fi, is); r = apk_extract_file(ctx->root_fd, fi, 0, 0, is, 0, 0, 0, diff --git a/src/extract_v2.c b/src/extract_v2.c index 588e1e8..e3229de 100644 --- a/src/extract_v2.c +++ b/src/extract_v2.c @@ -330,7 +330,7 @@ static int apk_extract_v2_entry(void *pctx, const struct apk_file_info *fi, stru return 0; } - if (!sctx->control_verified) return 0; + if (!sctx->data_started) return 0; if (!ectx->ops->file) return -ECANCELED; return ectx->ops->file(ectx, fi, is); } @@ -345,9 +345,9 @@ int apk_extract_v2(struct apk_extract_ctx *ectx, struct apk_istream *is) if (ectx->generate_identity) action = trust->allow_untrusted ? APK_SIGN_GENERATE : APK_SIGN_VERIFY_AND_GENERATE; else if (ectx->identity) - action = trust->allow_untrusted ? APK_SIGN_NONE : APK_SIGN_VERIFY_IDENTITY; + action = APK_SIGN_VERIFY_IDENTITY; else - action = trust->allow_untrusted ? APK_SIGN_NONE : APK_SIGN_VERIFY; + action = APK_SIGN_VERIFY; if (!ectx->ops) ectx->ops = &extract_v2verify_ops; ectx->pctx = &sctx; |