From f88f8205a7ef27209b8a0231892ce66e96169d42 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Sat, 17 Jan 2009 08:06:23 +0000 Subject: archive: set suid bit after chown if needed chown will reset the suid bit so we need to set it again. --- src/archive.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/archive.c b/src/archive.c index 765b786098..8ffb921490 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); } -- cgit v1.2.3