From cfa8b736f897b9bf8906dd38538f6058a5ad2ba6 Mon Sep 17 00:00:00 2001 From: Fredrik Gustafsson Date: Tue, 19 Nov 2019 12:07:44 +0100 Subject: Don't unpack files to system root When unpacking a file that is in root, it got a temporary file name /.apk... however if the --root option was used it should have the name root/.apk... otherwise unpacking will fail if the user does not have write access to /. Signed-off-by: Fredrik Gustafsson --- src/database.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/database.c b/src/database.c index 4e41f21..c699444 100644 --- a/src/database.c +++ b/src/database.c @@ -2391,7 +2391,11 @@ static const char *format_tmpname(struct apk_package *pkg, struct apk_db_file *f EVP_MD_CTX_free(mdctx); apk_blob_push_blob(&b, APK_BLOB_PTR_LEN(f->diri->dir->name, f->diri->dir->namelen)); - apk_blob_push_blob(&b, APK_BLOB_STR("/.apk.")); + if (f->diri->dir->namelen > 0) { + apk_blob_push_blob(&b, APK_BLOB_STR("/.apk.")); + } else { + apk_blob_push_blob(&b, APK_BLOB_STR(".apk.")); + } apk_blob_push_hexdump(&b, APK_BLOB_PTR_LEN((char *)md, 24)); apk_blob_push_blob(&b, APK_BLOB_PTR_LEN("", 1)); -- cgit v1.2.3-60-g2f50