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)
This commit is contained in:
Jung-uk Kim 2012-09-14 00:19:06 +00:00
parent 0a15e5d30d
commit d902fa0fa4
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=240476
5 changed files with 7 additions and 6 deletions

View File

@ -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 *);

View File

@ -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);
}

View File

@ -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) {

View File

@ -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);

View File

@ -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)