Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
pkg: multiple fixes
Baptiste Daroussin committed 1 year ago
commit a18ee3eff9a7e81ae74f1cda5ed362b147011fb2
parent d48ad4c
4 files changed +11 -3
modified libpkg/pkg_add.c
@@ -1874,7 +1874,7 @@ open_tempdir(struct pkg_add_context *context, const char *path)
				continue;
			if (flag != 0 && S_ISLNK(st.st_mode)) {
				struct pkgdb_it	*it = NULL;
-
				struct pkg *p;
+
				struct pkg *p = NULL;
				if (context->db != NULL && (it = pkgdb_query_which(context->db, walk, false)) != NULL) {
					if (pkgdb_it_next(it, &p, PKG_LOAD_BASIC) != EPKG_OK) {
						pkgdb_it_free(it);
@@ -1884,9 +1884,10 @@ open_tempdir(struct pkg_add_context *context, const char *path)
					/* Not myself */
					if (!STREQ(p->uid, context->pkg->uid)) {
						/* fallback */
-
						pkg_free(p);
-
						if (fstatat(context->rootfd, RELATIVE_PATH(walk), &st, 0) == -1)
+
						if (fstatat(context->rootfd, RELATIVE_PATH(walk), &st, 0) == -1) {
+
							pkg_free(p);
							continue;
+
						}
					}
					pkg_free(p);
				}
modified libpkg/pkg_create.c
@@ -504,6 +504,9 @@ load_metadata(struct pkg *pkg, const char *metadata, const char *plist,
		close(fd);
		return (EPKG_FATAL);
	}
+
	/* ensure the uid is properly */
+
	free(pkg->uid);
+
	pkg->uid = xstrdup(pkg->name);

	pkg_load_message_from_file(fd, pkg, "+DISPLAY");
	if (pkg->desc == NULL)
modified libpkg/pkg_ports.c
@@ -230,6 +230,8 @@ name_key(struct plist *p, char *line, struct file_attr *a __unused)
	tmp[0] = '\0';
	tmp++;
	p->pkg->name = xstrdup(line);
+
	free(p->pkg->uid);
+
	p->pkg->uid = xstrdup(line);
	p->pkg->version = xstrdup(tmp);

	return (EPKG_OK);
modified libpkg/pkgdb_iterator.c
@@ -909,6 +909,8 @@ populate_pkg(sqlite3_stmt *stmt, struct pkg *pkg) {
			case PKG_ATTR_NAME:
				free(pkg->name);
				pkg->name = xstrdup(sqlite3_column_text(stmt, icol));
+
				free(pkg->uid);
+
				pkg->uid = xstrdup(sqlite3_column_text(stmt, icol));
				break;
			case PKG_ATTR_OLD_VERSION:
				free(pkg->old_version);