summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2021-08-03 21:21:09 +0300
committerTimo Teräs <timo.teras@iki.fi>2021-08-03 21:21:43 +0300
commitaa44cfac05bb4bd6f336ebbfd7b26deca8a19075 (patch)
treedbfb586e5ef9ffebeb4362bcff67e1b155706fc8
parenta0e59e089786e0203de62bc5f9fc02f5e04ad3b1 (diff)
downloadapk-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.c3
-rw-r--r--src/extract_v2.c6
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;