Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Yet more small leaks.
Keve committed 1 year ago
commit 0d4f404b2dd39fca26b96f09535fb153710080cc
parent 372a1ef
4 files changed +14 -4
modified libpkg/pkg_ports.c
@@ -971,8 +971,7 @@ flush_script_buffer(xstring *buf, struct pkg *p, int type)
int
plist_parse_line(struct plist *plist, char *line)
{
-
	char *keyword, *buf, *bkpline;
-
	struct file_attr *a;
+
	char *buf, *bkpline;

	if (line[0] == '\0')
		return (EPKG_OK);
@@ -981,12 +980,13 @@ plist_parse_line(struct plist *plist, char *line)
	bkpline = xstrdup(line);

	if (line[0] == '@') {
-
		keyword = NULL;
-
		a = NULL;
+
		char *keyword = 0;
+
		struct file_attr *a = 0;
		buf = extract_keywords(line + 1, &keyword, &a);
		if (buf == NULL) {
			pkg_emit_error("Malformed keyword %s, expecting @keyword "
			    "or @keyword(owner,group,mode)", bkpline);
+
			free_file_attr(a);
			free(bkpline);
			return (EPKG_FATAL);
		}
@@ -997,9 +997,11 @@ plist_parse_line(struct plist *plist, char *line)
			    keyword, line);
			/* FALLTHRU */
		case EPKG_FATAL:
+
			free_file_attr(a);
			free(bkpline);
			return (EPKG_FATAL);
		}
+
		free_file_attr(a);
	} else {
		buf = line;
		strlcpy(plist->last_file, buf, sizeof(plist->last_file));
modified libpkg/pkg_repo_create.c
@@ -912,11 +912,13 @@ pkg_repo_create(struct pkg_repo_create *prc, char *path)

	for (int i = 0; i < num_workers; i++)
		pthread_join(threads[i], NULL);
+
	free(threads);
	ucl_object_emit_streamline_end_container(te.ctx);
	pkg_emit_progress_tick(len, len);
	ucl_object_emit_streamline_finish(te.ctx);
	ucl_object_emit_funcs_free(f);
	ucl_object_unref(obj);
+
	ucl_object_unref(ar);

	/* Write metafile */

modified libpkg/pkg_repo_meta.c
@@ -81,9 +81,11 @@ pkg_repo_meta_free(struct pkg_repo_meta *meta)
		free(meta->conflicts);
		free(meta->manifests);
		free(meta->digests);
+
		free(meta->data);
		free(meta->fulldb);
		free(meta->filesite);
		free(meta->conflicts_archive);
+
		free(meta->data_archive);
		free(meta->manifests_archive);
		free(meta->digests_archive);
		free(meta->fulldb_archive);
modified src/repo.c
@@ -112,19 +112,23 @@ exec_repo(int argc, char **argv)
	pkg_repo_create_set_sign(prc, argv + 1, argc - 1, password_cb);

	if (argc < 1) {
+
		pkg_repo_create_free(prc);
		usage_repo();
		return (EXIT_FAILURE);
	}

	if (argc > 2 && !STREQ(argv[1], "signing_command:")) {
+
		pkg_repo_create_free(prc);
		usage_repo();
		return (EXIT_FAILURE);
	}

	if (pkg_repo_create(prc, argv[0]) != EPKG_OK) {
		printf("Cannot create repository catalogue\n");
+
		pkg_repo_create_free(prc);
		return (EXIT_FAILURE);
	}

+
	pkg_repo_create_free(prc);
	return (EXIT_SUCCESS);
}