summaryrefslogtreecommitdiff
path: root/pkgtools
diff options
context:
space:
mode:
authorjperkin <jperkin@pkgsrc.org>2018-04-17 12:52:35 +0000
committerjperkin <jperkin@pkgsrc.org>2018-04-17 12:52:35 +0000
commit322299be797bbb89070d6ddcb0dc0b1c87c4da0b (patch)
tree6c66db72f91ac88fac26415d8cffac66af294d81 /pkgtools
parentf8a98d823116e8ee8a268b915abe097a15862ff6 (diff)
downloadpkgsrc-322299be797bbb89070d6ddcb0dc0b1c87c4da0b.tar.gz
pkg_install: Update to 20180417.
Fix an issue in pkg_create where we may have been using corrupted owner and group information. Noticed on macOS where libarchive would complain about the owner entry being too long. Reviewed by joerg. Also includes some manual page improvements committed recently.
Diffstat (limited to 'pkgtools')
-rw-r--r--pkgtools/pkg_install/files/create/util.c15
-rw-r--r--pkgtools/pkg_install/files/lib/version.h4
2 files changed, 10 insertions, 9 deletions
diff --git a/pkgtools/pkg_install/files/create/util.c b/pkgtools/pkg_install/files/create/util.c
index 88d470cffb1..8d535f0ca1f 100644
--- a/pkgtools/pkg_install/files/create/util.c
+++ b/pkgtools/pkg_install/files/create/util.c
@@ -65,7 +65,7 @@ update_ids(struct memory_file *file)
errx(2, "user %s unknown", file->owner);
file->st.st_uid = uid;
} else {
- file->owner = user_from_uid(file->st.st_uid, 1);
+ file->owner = xstrdup(user_from_uid(file->st.st_uid, 1));
}
if (file->group != NULL) {
@@ -73,10 +73,9 @@ update_ids(struct memory_file *file)
if (gid_from_group(file->group, &gid) == -1)
errx(2, "group %s unknown", file->group);
- file->group = file->group;
file->st.st_gid = gid;
} else {
- file->group = group_from_gid(file->st.st_gid, 1);
+ file->group = xstrdup(group_from_gid(file->st.st_gid, 1));
}
}
@@ -88,8 +87,8 @@ make_memory_file(const char *archive_name, void *data, size_t len,
file = xmalloc(sizeof(*file));
file->name = archive_name;
- file->owner = owner;
- file->group = group;
+ file->owner = (owner != NULL) ? xstrdup(owner) : NULL;
+ file->group = (group != NULL) ? xstrdup(group) : NULL;
file->data = data;
file->len = len;
@@ -116,8 +115,8 @@ load_memory_file(const char *disk_name,
file = xmalloc(sizeof(*file));
file->name = archive_name;
- file->owner = owner;
- file->group = group;
+ file->owner = (owner != NULL) ? xstrdup(owner) : NULL;
+ file->group = (group != NULL) ? xstrdup(group) : NULL;
file->mode = mode;
fd = open(disk_name, O_RDONLY);
@@ -148,6 +147,8 @@ void
free_memory_file(struct memory_file *file)
{
if (file != NULL) {
+ free((char *)file->owner);
+ free((char *)file->group);
free(file->data);
free(file);
}
diff --git a/pkgtools/pkg_install/files/lib/version.h b/pkgtools/pkg_install/files/lib/version.h
index 95692bb67fe..16338d199f1 100644
--- a/pkgtools/pkg_install/files/lib/version.h
+++ b/pkgtools/pkg_install/files/lib/version.h
@@ -1,4 +1,4 @@
-/* $NetBSD: version.h,v 1.174 2018/03/25 03:56:28 sevan Exp $ */
+/* $NetBSD: version.h,v 1.175 2018/04/17 12:52:35 jperkin Exp $ */
/*
* Copyright (c) 2001 Thomas Klausner. All rights reserved.
@@ -27,6 +27,6 @@
#ifndef _INST_LIB_VERSION_H_
#define _INST_LIB_VERSION_H_
-#define PKGTOOLS_VERSION 20180325
+#define PKGTOOLS_VERSION 20180417
#endif /* _INST_LIB_VERSION_H_ */