Radish alpha
H
HardenedBSD Package Manager
Radicle
Git (anonymous pull)
Log in to clone via SSH
Fix one memleak, one read before initialization.
jlaffaye committed 15 years ago
commit db81aa5ffd219f5f1e81a4c9b6880cfb5a1f628d
parent 2ba375bb94e4e0d3c8bf0f1d6068bc2d21fb3384
4 files changed +19 -16
modified libpkg/pkg.c
@@ -60,19 +60,21 @@ pkg_resolvdeps(struct pkg *pkg, struct pkgdb *db) {
	int i;

	deps = pkg_deps(pkg);
+
	if (deps == NULL)
+
		return (-1);
+

	pkg_new(&p);
	for (i = 0; deps[i] != NULL; i++) {
		it = pkgdb_query(db, pkg_origin(deps[i]), MATCH_EXACT);

-
		if (pkgdb_it_next_pkg(it, &p, MATCH_EXACT) == 0) {
-
			p->type = PKG_INSTALLED;
-
			pkg_free(deps[i]);
-
			deps[i] = p;
+
		if (pkgdb_it_next_pkg(it, &p, PKG_BASIC) == 0) {
+
			deps[i]->type = PKG_INSTALLED;
		} else {
			deps[i]->type = PKG_NOTFOUND;
		}
		pkgdb_it_free(it);
	}
+
	pkg_free(p);

	return (0);
}
modified libpkg/pkgdb.c
@@ -25,14 +25,12 @@ static void pkgdb_regex_extended(sqlite3_context *, int, sqlite3_value **);
static void pkgdb_regex_delete(void *);

static void
-
pkgdb_regex_delete(void *ctx)
+
pkgdb_regex_delete(void *p)
{
-
	regex_t *re = NULL;
+
	regex_t *re = (regex_t *)p;

-
	if ((re = (regex_t *)sqlite3_get_auxdata(ctx, 0)) != NULL) {
-
		regfree(re);
-
		free(re);
-
	}
+
	regfree(re);
+
	free(re);
}

static void
modified libpkg/util.c
@@ -26,6 +26,7 @@ array_init(struct array *a, size_t c)
	a->cap = c;
	a->len = 0;
	a->data = malloc(sizeof(void*) * a->cap);
+
	a->data[0] = NULL;
}

void
modified pkg/info.c
@@ -19,10 +19,6 @@ pkg_size(struct pkg *pkg)
	int64_t size = 0;

	files = pkg_files(pkg);
-
	if (files == NULL) {
-
		warnx("Missing files informations for %s", pkg_origin(pkg));
-
		return (0);
-
	}
	for (size_t i = 0; files[i] != NULL; i++) {
		if (stat(pkg_file_path(files[i]), &st) != 0) {
			warn("stat(%s)", pkg_file_path(files[i]));
@@ -41,18 +37,22 @@ query_pkg(struct pkg *pkg, unsigned char opt) {

	if (opt & INFO_PRINT_DEP) {
		printf("%s-%s depends on: \n", pkg_name(pkg), pkg_version(pkg));
+

		deps = pkg_deps(pkg);
		for (i = 0; deps[i] != NULL; i++) {
			printf("%s-%s\n", pkg_name(deps[i]), pkg_version(deps[i]));
		}
+

		printf("\n");
	} else if (opt & INFO_LIST_FILES) {
		printf("%s-%s owns the following files:\n", pkg_name(pkg), pkg_version(pkg));
-
		files = pkg_files(pkg);

+
		files = pkg_files(pkg);
		for (i = 0; files[i] != NULL; i++) {
			printf("%s\n", pkg_file_path(files[i]));
		}
+

+
		printf("\n");
	} else {
		printf("%s-%s: %s\n", pkg_name(pkg), pkg_version(pkg), pkg_comment(pkg));
	}
@@ -150,7 +150,6 @@ exec_info(int argc, char **argv)
		if (opt & INFO_EXISTS) {
			retcode = 0;
		} else if (opt & INFO_PRINT_DEP) {
-

			printf("%s-%s depends on:\n", pkg_name(pkg), pkg_version(pkg));

			deps = pkg_deps(pkg);
@@ -170,10 +169,13 @@ exec_info(int argc, char **argv)
			printf("\n");
		} else if (opt & INFO_LIST_FILES) {
			printf("%s-%s owns the following files:\n", pkg_name(pkg), pkg_version(pkg));
+

			files = pkg_files(pkg);
			for (i = 0; files[i] != NULL; i++) {
				printf("%s\n", pkg_file_path(files[i]));
			}
+

+
			printf("\n");
		} else if (opt & INFO_SIZE) {
			humanize_number(size, sizeof(size), pkg_size(pkg), "B", HN_AUTOSCALE, 0);
			printf("%s-%s size is %s\n", pkg_name(pkg), pkg_version(pkg), size);