diff options
Diffstat (limited to 'src/archive.c')
-rw-r--r-- | src/archive.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/archive.c b/src/archive.c index 765b786..8ffb921 100644 --- a/src/archive.c +++ b/src/archive.c @@ -241,6 +241,12 @@ int apk_archive_entry_extract(const struct apk_file_info *ae, if (r < 0) apk_error("Failed to set ownership on %s: %s", fn, strerror(errno)); + /* chown resets suid bit so we need set it again */ + if (ae->mode & 07000) + r = chmod(fn, ae->mode & 07777); + if (r < 0) + apk_error("Failed to set file permissions on %s: %s", + fn, strerror(errno)); } else { apk_error("Failed to extract %s\n", ae->name); } |