aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2012-09-19 19:14:21 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2012-09-19 19:14:21 +0000
commit8c3ae676eb903649bef6ba7645773b6fadd7b5ff (patch)
tree117e366cc4f29c6d881a342537f21265671371d4
parentc7967de6ec775134c04918d7e32fad37a873f7ee (diff)
downloadsrc-8c3ae676eb903649bef6ba7645773b6fadd7b5ff.tar.gz
src-8c3ae676eb903649bef6ba7645773b6fadd7b5ff.zip
MFC: r240476
Do not change owner, group, or mode when package database directory and its contents are created with pkg_add(1). It may happen when the packing list contains @owner, @group, or @mode. Approved by: re (kib), portmgr (bapt)
Notes
Notes: svn path=/releng/9.1/; revision=240702
-rw-r--r--usr.sbin/pkg_install/add/add.h2
-rw-r--r--usr.sbin/pkg_install/add/extract.c2
-rw-r--r--usr.sbin/pkg_install/add/futil.c5
-rw-r--r--usr.sbin/pkg_install/add/perform.c2
-rw-r--r--usr.sbin/pkg_install/lib/lib.h2
5 files changed, 7 insertions, 6 deletions
diff --git a/usr.sbin/pkg_install/add/add.h b/usr.sbin/pkg_install/add/add.h
index f1607ee3e36d..15f02d120cd0 100644
--- a/usr.sbin/pkg_install/add/add.h
+++ b/usr.sbin/pkg_install/add/add.h
@@ -41,7 +41,7 @@ extern char *PkgAddCmd;
extern char FirstPen[];
extern add_mode_t AddMode;
-int make_hierarchy(char *);
+int make_hierarchy(char *, Boolean);
void extract_plist(const char *, Package *);
void apply_perms(const char *, const char *);
diff --git a/usr.sbin/pkg_install/add/extract.c b/usr.sbin/pkg_install/add/extract.c
index 732a13fea441..40f036549d9a 100644
--- a/usr.sbin/pkg_install/add/extract.c
+++ b/usr.sbin/pkg_install/add/extract.c
@@ -225,7 +225,7 @@ extract_plist(const char *home, Package *pkg)
printf("extract: CWD to %s\n", p->name);
PUSHOUT(Directory);
if (strcmp(p->name, ".")) {
- if (!Fake && make_hierarchy(p->name) == FAIL) {
+ if (!Fake && make_hierarchy(p->name, TRUE) == FAIL) {
cleanup(0);
errx(2, "%s: unable to cwd to '%s'", __func__, p->name);
}
diff --git a/usr.sbin/pkg_install/add/futil.c b/usr.sbin/pkg_install/add/futil.c
index ca095ea7ae2e..0b0cb44b5832 100644
--- a/usr.sbin/pkg_install/add/futil.c
+++ b/usr.sbin/pkg_install/add/futil.c
@@ -31,7 +31,7 @@ __FBSDID("$FreeBSD$");
*/
int
-make_hierarchy(char *dir)
+make_hierarchy(char *dir, Boolean set_perm)
{
char *cp1, *cp2;
@@ -55,7 +55,8 @@ make_hierarchy(char *dir)
*cp2 = '/';
return FAIL;
}
- apply_perms(NULL, dir);
+ if (set_perm)
+ apply_perms(NULL, dir);
}
/* Put it back */
if (cp2) {
diff --git a/usr.sbin/pkg_install/add/perform.c b/usr.sbin/pkg_install/add/perform.c
index 79e249f7f7a1..1cbc73bbcd9f 100644
--- a/usr.sbin/pkg_install/add/perform.c
+++ b/usr.sbin/pkg_install/add/perform.c
@@ -511,7 +511,7 @@ pkg_do(char *pkg)
zapLogDir = 1;
if (Verbose)
printf("Attempting to record package into %s..\n", LogDir);
- if (make_hierarchy(LogDir)) {
+ if (make_hierarchy(LogDir, FALSE)) {
warnx("can't record package into '%s', you're on your own!",
LogDir);
bzero(LogDir, FILENAME_MAX);
diff --git a/usr.sbin/pkg_install/lib/lib.h b/usr.sbin/pkg_install/lib/lib.h
index fff8f90d013b..eab8a007f2a8 100644
--- a/usr.sbin/pkg_install/lib/lib.h
+++ b/usr.sbin/pkg_install/lib/lib.h
@@ -99,7 +99,7 @@
* Version of the package tools - increase whenever you make a change
* in the code that is not cosmetic only.
*/
-#define PKG_INSTALL_VERSION 20120530
+#define PKG_INSTALL_VERSION 20120913
#define PKG_WRAPCONF_FNAME "/var/db/pkg_install.conf"
#define main(argc, argv) real_main(argc, argv)