Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Plug memory leaks
Baptiste Daroussin committed 11 years ago
commit ed4e56a095d19be6e70a0397eaf1899fc57c8018
parent a5737b0
3 files changed +35 -10
modified libpkg/pkg_repo.c
@@ -456,6 +456,7 @@ pkg_repo_parse_sigkeys(const char *in, int inlen, struct sig_cert **sc)
			else if (len >= MAXPATHLEN) {
				pkg_emit_error("filename is incorrect for signature_fingerprints"
						"output: %d, wanted 5..%d bytes", type, len, MAXPATHLEN);
+
				free(s);
				return (EPKG_FATAL);
			}
			HASH_FIND(hh, *sc, p, len, s);
@@ -484,6 +485,7 @@ pkg_repo_parse_sigkeys(const char *in, int inlen, struct sig_cert **sc)
			if (end - p < sizeof (int)) {
				pkg_emit_error("truncated reply for signature_fingerprints"
						"output", type);
+
				free(s);
				return (EPKG_FATAL);
			}
			len = *(int *)p;
@@ -527,6 +529,8 @@ pkg_repo_parse_sigkeys(const char *in, int inlen, struct sig_cert **sc)
		}
	}

+
	free(s);
+

	return (rc);
}

modified libpkg/pkg_solve.c
@@ -345,8 +345,10 @@ pkg_solve_add_depend_rule(struct pkg_solve_problem *problem,
		return (EPKG_FATAL);
	/* !A */
	it = pkg_solve_item_new(var);
-
	if (it == NULL)
+
	if (it == NULL) {
+
		pkg_solve_rule_free(rule);
		return (EPKG_FATAL);
+
	}

	it->inverse = -1;
	RULE_ITEM_PREPEND(rule, it);
@@ -354,8 +356,10 @@ pkg_solve_add_depend_rule(struct pkg_solve_problem *problem,
	cnt = 1;
	LL_FOREACH(depvar, curvar) {
		it = pkg_solve_item_new(curvar);
-
		if (it == NULL)
+
		if (it == NULL) {
+
			pkg_solve_rule_free(rule);
			return (EPKG_FATAL);
+
		}

		it->inverse = 1;
		RULE_ITEM_PREPEND(rule, it);
@@ -413,15 +417,19 @@ pkg_solve_add_conflict_rule(struct pkg_solve_problem *problem,
			return (EPKG_FATAL);
		/* !A */
		it = pkg_solve_item_new(var);
-
		if (it == NULL)
+
		if (it == NULL) {
+
			pkg_solve_rule_free(rule);
			return (EPKG_FATAL);
+
		}

		it->inverse = -1;
		RULE_ITEM_PREPEND(rule, it);
		/* !Bx */
		it = pkg_solve_item_new(curvar);
-
		if (it == NULL)
+
		if (it == NULL) {
+
			pkg_solve_rule_free(rule);
			return (EPKG_FATAL);
+
		}

		it->inverse = -1;
		RULE_ITEM_PREPEND(rule, it);
@@ -451,8 +459,10 @@ pkg_solve_add_require_rule(struct pkg_solve_problem *problem,
			return (EPKG_FATAL);
		/* !A */
		it = pkg_solve_item_new(var);
-
		if (it == NULL)
+
		if (it == NULL) {
+
			pkg_solve_rule_free(rule);
			return (EPKG_FATAL);
+
		}

		it->inverse = -1;
		RULE_ITEM_PREPEND(rule, it);
@@ -536,8 +546,10 @@ pkg_solve_add_request_rule(struct pkg_solve_problem *problem,
		curvar = pkg_solve_find_var_in_chain(var, item->unit);
		assert(curvar != NULL);
		it = pkg_solve_item_new(curvar);
-
		if (it == NULL)
+
		if (it == NULL) {
+
			pkg_solve_rule_free(rule);
			return (EPKG_FATAL);
+
		}

		/* All request variables are top level */
		curvar->top_level = true;
@@ -564,15 +576,19 @@ pkg_solve_add_request_rule(struct pkg_solve_problem *problem,
						return (EPKG_FATAL);
					/* !A */
					it = pkg_solve_item_new(curvar);
-
					if (it == NULL)
+
					if (it == NULL) {
+
						pkg_solve_rule_free(rule);
						return (EPKG_FATAL);
+
					}

					it->inverse = -1;
					RULE_ITEM_PREPEND(rule, it);
					/* !Bx */
					it = pkg_solve_item_new(confvar);
-
					if (it == NULL)
+
					if (it == NULL) {
+
						pkg_solve_rule_free(rule);
						return (EPKG_FATAL);
+
					}

					it->inverse = -1;
					RULE_ITEM_PREPEND(rule, it);
@@ -610,8 +626,10 @@ pkg_solve_add_chain_rule(struct pkg_solve_problem *problem,
			return (EPKG_FATAL);
		/* !Ax */
		it = pkg_solve_item_new(var);
-
		if (it == NULL)
+
		if (it == NULL) {
+
			pkg_solve_rule_free(rule);
			return (EPKG_FATAL);
+
		}

		it->inverse = -1;
		RULE_ITEM_PREPEND(rule, it);
modified libpkg/repo/binary/fetch.c
@@ -195,8 +195,10 @@ pkg_repo_binary_try_fetch(struct pkg_repo *repo, struct pkg *pkg,
	else
		pkg_snprintf(url, sizeof(url), "%S/%R", packagesite, pkg);

-
	if (!mirror && strncasecmp(packagesite, "file://", 7) == 0)
+
	if (!mirror && strncasecmp(packagesite, "file://", 7) == 0) {
+
		free(dir);
		return (EPKG_OK);
+
	}

	retcode = pkg_fetch_file(repo, url, dest, 0);
	fetched = 1;
@@ -217,6 +219,7 @@ checksum:
		}

		unlink(dest);
+
		free(dir);
		pkg_emit_error("cached package %s-%s: "
		    "size mismatch, fetching from remote",
		    pkg->name, pkg->version);