Author: jkim
Date: Fri Sep 14 00:19:06 2012
New Revision: 240476
URL: http://svn.freebsd.org/changeset/base/240476

Log:
  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.
  
  Reported by:  Donald Bostrom (dbostrom at niksun dot com)
  Reviewed by:  portmgr (bapt)

Modified:
  head/usr.sbin/pkg_install/add/add.h
  head/usr.sbin/pkg_install/add/extract.c
  head/usr.sbin/pkg_install/add/futil.c
  head/usr.sbin/pkg_install/add/perform.c
  head/usr.sbin/pkg_install/lib/lib.h

Modified: head/usr.sbin/pkg_install/add/add.h
==============================================================================
--- head/usr.sbin/pkg_install/add/add.h Thu Sep 13 22:26:22 2012        
(r240475)
+++ head/usr.sbin/pkg_install/add/add.h Fri Sep 14 00:19:06 2012        
(r240476)
@@ -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 *);
 

Modified: head/usr.sbin/pkg_install/add/extract.c
==============================================================================
--- head/usr.sbin/pkg_install/add/extract.c     Thu Sep 13 22:26:22 2012        
(r240475)
+++ head/usr.sbin/pkg_install/add/extract.c     Fri Sep 14 00:19:06 2012        
(r240476)
@@ -225,7 +225,7 @@ extract_plist(const char *home, Package 
                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);
                }

Modified: head/usr.sbin/pkg_install/add/futil.c
==============================================================================
--- head/usr.sbin/pkg_install/add/futil.c       Thu Sep 13 22:26:22 2012        
(r240475)
+++ head/usr.sbin/pkg_install/add/futil.c       Fri Sep 14 00:19:06 2012        
(r240476)
@@ -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) {

Modified: head/usr.sbin/pkg_install/add/perform.c
==============================================================================
--- head/usr.sbin/pkg_install/add/perform.c     Thu Sep 13 22:26:22 2012        
(r240475)
+++ head/usr.sbin/pkg_install/add/perform.c     Fri Sep 14 00:19:06 2012        
(r240476)
@@ -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);

Modified: head/usr.sbin/pkg_install/lib/lib.h
==============================================================================
--- head/usr.sbin/pkg_install/lib/lib.h Thu Sep 13 22:26:22 2012        
(r240475)
+++ head/usr.sbin/pkg_install/lib/lib.h Fri Sep 14 00:19:06 2012        
(r240476)
@@ -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)
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to