aboutsummaryrefslogtreecommitdiffstats
path: root/src/package.c
diff options
context:
space:
mode:
authorJussi Kukkonen <jussi.kukkonen@compile.fi>2018-05-29 09:37:41 +0300
committerWilliam Pitcock <nenolod@dereferenced.org>2018-07-02 10:06:53 -0500
commitd609ef3c6cec438f32383ffb03081a36583402a5 (patch)
treea8384386e189755b41b7db83ca57a1bcb2574e72 /src/package.c
parent5c4b90dfd48d476b9e7aae2ad6627dd6f03ac557 (diff)
downloadapk-tools-d609ef3c6cec438f32383ffb03081a36583402a5.tar.bz2
apk-tools-d609ef3c6cec438f32383ffb03081a36583402a5.tar.xz
Invalidate id cache after script execution
It's common for a pre-install script to do something like addgroup -S group 2>/dev/null When apk installs files after this, it sets the owner/group based on id cache but currently the id cache is stale and doesn't contain the new group at that point: instead the file will be installed with gid that the build host happened to have for that group -- on target this might mean a non-existing group or a completely different group. We can't know if the script really did modify id cache contents so make sure to reset the id cache on every script execution.
Diffstat (limited to 'src/package.c')
-rw-r--r--src/package.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/package.c b/src/package.c
index d851ff0..3be8b84 100644
--- a/src/package.c
+++ b/src/package.c
@@ -1032,6 +1032,10 @@ void apk_ipkg_run_script(struct apk_installed_package *ipkg,
if (apk_db_run_script(db, fn, argv) < 0)
goto err;
+
+ /* Script may have done something that changes id cache contents */
+ apk_id_cache_reset(&db->id_cache);
+
goto cleanup;
err_log: