From 517752a456d2ceaf05789afe39aee08d022e877e Mon Sep 17 00:00:00 2001 From: Baptiste Daroussin Date: Sun, 22 Jan 2017 14:21:54 +0100 Subject: [PATCH] Fix install as a user --- libpkg/pkg_add.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/libpkg/pkg_add.c b/libpkg/pkg_add.c index f26d9ba9d6..ba8a72618a 100644 --- a/libpkg/pkg_add.c +++ b/libpkg/pkg_add.c @@ -1220,6 +1220,9 @@ pkg_add_fromdir(struct pkg *pkg, const char *src) const char *path; char buffer[128]; size_t link_len; + bool install_as_user; + + install_as_user = (getenv("INSTALL_AS_USER") != NULL); fromfd = open(src, O_DIRECTORY); if (fromfd == -1) { @@ -1241,7 +1244,7 @@ pkg_add_fromdir(struct pkg *pkg, const char *src) } d->uid = pwent.pw_uid; } else { - d->uid = st.st_uid; + d->uid = install_as_user ? st.st_uid : 0; } if (d->gname[0] != '\0') { if (getgrnam_r(d->gname, &grent, buffer, sizeof(buffer), @@ -1286,7 +1289,7 @@ pkg_add_fromdir(struct pkg *pkg, const char *src) } f->uid = pwent.pw_uid; } else { - f->uid = st.st_uid; + f->uid = install_as_user ? st.st_uid : 0; } if (f->gname[0] != '\0') { @@ -1302,7 +1305,7 @@ pkg_add_fromdir(struct pkg *pkg, const char *src) if (f->perm == 0) f->perm = st.st_mode & ~S_IFMT; - if (f->uid == 0) + if (f->uid == 0 && install_as_user) f->uid = st.st_uid; #ifdef HAVE_STRUCT_STAT_ST_MTIM f->time[0] = st.st_atim;