Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
quality: plug plenty of memory leaks
Baptiste Daroussin committed 4 years ago
commit ff0be3e01ef0d32f02b45e2fbc5a2775d67db3b4
parent ae45442
7 files changed +59 -14
modified libpkg/packing.c
@@ -339,6 +339,7 @@ packing_finish(struct packing *pack)

	archive_read_close(pack->aread);
	archive_read_free(pack->aread);
+
	archive_entry_linkresolver_free(pack->resolver);

	archive_write_close(pack->awrite);
	archive_write_free(pack->awrite);
modified libpkg/pkg.c
@@ -69,6 +69,7 @@ pkg_free(struct pkg *pkg)
	free(pkg->name);
	free(pkg->origin);
	free(pkg->old_version);
+
	free(pkg->version);
	free(pkg->maintainer);
	free(pkg->www);
	free(pkg->arch);
modified libpkg/pkg_attributes.c
@@ -83,6 +83,7 @@ pkg_dep_is_locked(struct pkg_dep const * const d)
void
pkg_file_free(struct pkg_file *file)
{
+

	free(file->sum);
	free(file);
}
modified libpkg/pkg_config.c
@@ -866,9 +866,12 @@ load_repo_file(int dfd, const char *repodir, const char *repofile,
	close(fd);

	obj = ucl_parser_get_object(p);
-
	if (obj == NULL)
+
	if (obj == NULL) {
+
		ucl_parser_free(p);
		return;
+
	}

+
	ucl_parser_free(p);
	if (obj->type == UCL_OBJECT)
		walk_repo_obj(obj, repofile, flags);

@@ -1206,7 +1209,7 @@ pkg_ini(const char *path, const char *reposdir, pkg_init_flags flags)
			ucl_object_replace_key(config, ucl_object_ref(cur), key, strlen(key), true);
		}
	}
-

+
	ucl_object_unref(ncfg);
	ncfg = NULL;
	it = NULL;
	while ((cur = ucl_iterate_object(config, &it, true))) {
@@ -1402,6 +1405,9 @@ pkg_ini(const char *path, const char *reposdir, pkg_init_flags flags)
out:
	free(oi.arch);
	free(oi.name);
+
	free(oi.version);
+
	free(oi.version_major);
+
	free(oi.version_minor);
	return err;

}
@@ -1469,7 +1475,8 @@ pkg_repo_free(struct pkg_repo *r)
	free(r->url);
	free(r->name);
	free(r->pubkey);
-
	free(r->meta);
+
	free(r->fingerprints);
+
	pkg_repo_meta_free(r->meta);
	if (r->ssh != NULL) {
		fprintf(r->ssh, "quit\n");
		pclose(r->ssh);
modified libpkg/pkg_elf.c
@@ -1073,6 +1073,10 @@ cleanup:
		elf_end(elf);
	if (oi == &loi) {
		free(oi->name);
+
		free(oi->version);
+
		free(oi->version_major);
+
		free(oi->version_minor);
+
		free(oi->arch);
	}
	close(fd);
	return (ret);
modified libpkg/pkgdb_iterator.c
@@ -129,6 +129,7 @@ load_val(sqlite3 *db, struct pkg *pkg, const char *sql, unsigned flags,
{
	sqlite3_stmt	*stmt;
	int		 ret;
+
	char *str;

	assert(db != NULL && pkg != NULL);

@@ -141,7 +142,9 @@ load_val(sqlite3 *db, struct pkg *pkg, const char *sql, unsigned flags,
	}

	sqlite3_bind_int64(stmt, 1, pkg->id);
-
	pkg_debug(4, "Pkgdb: running '%s'", sqlite3_expanded_sql(stmt));
+
	str = sqlite3_expanded_sql(stmt);
+
	pkg_debug(4, "Pkgdb: running '%s'", str);
+
	sqlite3_free(str);

	while ((ret = sqlite3_step(stmt)) == SQLITE_ROW) {
		pkg_adddata(pkg, sqlite3_column_text(stmt, 0));
@@ -167,6 +170,7 @@ load_tag_val(sqlite3 *db, struct pkg *pkg, const char *sql, unsigned flags,
{
	sqlite3_stmt	*stmt;
	int		 ret;
+
	char *str;

	assert(db != NULL && pkg != NULL);

@@ -179,7 +183,9 @@ load_tag_val(sqlite3 *db, struct pkg *pkg, const char *sql, unsigned flags,
	}

	sqlite3_bind_int64(stmt, 1, pkg->id);
-
	pkg_debug(4, "Pkgdb: running '%s'", sqlite3_expanded_sql(stmt));
+
	str = sqlite3_expanded_sql(stmt);
+
	pkg_debug(4, "Pkgdb: running '%s'", str);
+
	sqlite3_free(str);

	while ((ret = sqlite3_step(stmt)) == SQLITE_ROW) {
		pkg_addtagval(pkg, sqlite3_column_text(stmt, 0),
@@ -235,6 +241,7 @@ pkgdb_load_deps(sqlite3 *sqlite, struct pkg *pkg)
		"    JOIN pkg_option USING(option_id)"
		"  WHERE package_id = ?1"
		"  ORDER BY option";
+
	char *str;

	assert(pkg != NULL);

@@ -250,7 +257,9 @@ pkgdb_load_deps(sqlite3 *sqlite, struct pkg *pkg)
	}

	sqlite3_bind_int64(stmt, 1, pkg->id);
-
	pkg_debug(4, "Pkgdb: running '%s'", sqlite3_expanded_sql(stmt));
+
	str =sqlite3_expanded_sql(stmt);
+
	pkg_debug(4, "Pkgdb: running '%s'", str);
+
	sqlite3_free(str);

	/* XXX: why we used locked here ? */
	while ((ret = sqlite3_step(stmt)) == SQLITE_ROW) {
@@ -370,6 +379,7 @@ pkgdb_load_rdeps(sqlite3 *sqlite, struct pkg *pkg)
		"  FROM packages AS p"
		"    INNER JOIN deps AS d ON (p.id = d.package_id)"
		"  WHERE d.name = ?1";
+
	char *str;

	assert(pkg != NULL);

@@ -385,7 +395,9 @@ pkgdb_load_rdeps(sqlite3 *sqlite, struct pkg *pkg)
	}

	sqlite3_bind_text(stmt, 1, pkg->uid, -1, SQLITE_STATIC);
-
	pkg_debug(4, "Pkgdb: running '%s'", sqlite3_expanded_sql(stmt));
+
	str = sqlite3_expanded_sql(stmt);
+
	pkg_debug(4, "Pkgdb: running '%s'", str);
+
	sqlite3_free(str);

	/* XXX: why we used locked here ? */
	while ((ret = sqlite3_step(stmt)) == SQLITE_ROW) {
@@ -422,6 +434,7 @@ pkgdb_load_files(sqlite3 *sqlite, struct pkg *pkg)
		"  FROM config_files"
		"  WHERE package_id = ?1"
		"  ORDER BY PATH ASC";
+
	char *str;

	assert( pkg != NULL);
	assert(pkg->type == PKG_INSTALLED);
@@ -435,7 +448,9 @@ pkgdb_load_files(sqlite3 *sqlite, struct pkg *pkg)
	}

	sqlite3_bind_int64(stmt, 1, pkg->id);
-
	pkg_debug(4, "Pkgdb: running '%s'", sqlite3_expanded_sql(stmt));
+
	str = sqlite3_expanded_sql(stmt);
+
	pkg_debug(4, "Pkgdb: running '%s'", str);
+
	sqlite3_free(str);

	while (sqlite3_step(stmt) == SQLITE_ROW) {
		pkg_addfile(pkg, sqlite3_column_text(stmt, 0),
@@ -449,7 +464,9 @@ pkgdb_load_files(sqlite3 *sqlite, struct pkg *pkg)
	}

	sqlite3_bind_int64(stmt, 1, pkg->id);
-
	pkg_debug(4, "Pkgdb: running '%s'", sqlite3_expanded_sql(stmt));
+
	str = sqlite3_expanded_sql(stmt);
+
	pkg_debug(4, "Pkgdb: running '%s'", str);
+
	sqlite3_free(str);

	while ((ret = sqlite3_step(stmt)) == SQLITE_ROW) {
		pkg_addconfig_file(pkg, sqlite3_column_text(stmt, 0),
@@ -479,6 +496,7 @@ pkgdb_load_dirs(sqlite3 *sqlite, struct pkg *pkg)
		"  ORDER by path DESC";
	sqlite3_stmt	*stmt;
	int		 ret;
+
	char *str;

	assert(pkg != NULL);
	assert(pkg->type == PKG_INSTALLED);
@@ -492,7 +510,9 @@ pkgdb_load_dirs(sqlite3 *sqlite, struct pkg *pkg)
	}

	sqlite3_bind_int64(stmt, 1, pkg->id);
-
	pkg_debug(4, "Pkgdb: running '%s'", sqlite3_expanded_sql(stmt));
+
	str = sqlite3_expanded_sql(stmt);
+
	pkg_debug(4, "Pkgdb: running '%s'", str);
+
	sqlite3_free(str);

	while ((ret = sqlite3_step(stmt)) == SQLITE_ROW) {
		pkg_adddir(pkg, sqlite3_column_text(stmt, 0), false);
@@ -641,6 +661,7 @@ pkgdb_load_lua_scripts(sqlite3 *sqlite, struct pkg *pkg)
		"  FROM lua_script"
		"    JOIN pkg_lua_script USING(lua_script_id)"
		"  WHERE package_id = ?1";
+
	char *str;

	assert(pkg != NULL);
	assert(pkg->type == PKG_INSTALLED);
@@ -654,7 +675,10 @@ pkgdb_load_lua_scripts(sqlite3 *sqlite, struct pkg *pkg)
	}

	sqlite3_bind_int64(stmt, 1, pkg->id);
-
	pkg_debug(4, "Pkgdb: running '%s'", sqlite3_expanded_sql(stmt));
+

+
	str = sqlite3_expanded_sql(stmt);
+
	pkg_debug(4, "Pkgdb: running '%s'", str);
+
	sqlite3_free(str);

	while ((ret = sqlite3_step(stmt)) == SQLITE_ROW) {
		pkg_add_lua_script(pkg, sqlite3_column_text(stmt, 0),
@@ -682,6 +706,7 @@ pkgdb_load_scripts(sqlite3 *sqlite, struct pkg *pkg)
		"  FROM pkg_script"
		"    JOIN script USING(script_id)"
		"  WHERE package_id = ?1";
+
	char *str;

	assert(pkg != NULL);
	assert(pkg->type == PKG_INSTALLED);
@@ -695,7 +720,9 @@ pkgdb_load_scripts(sqlite3 *sqlite, struct pkg *pkg)
	}

	sqlite3_bind_int64(stmt, 1, pkg->id);
-
	pkg_debug(4, "Pkgdb: running '%s'", sqlite3_expanded_sql(stmt));
+
	str = sqlite3_expanded_sql(stmt);
+
	pkg_debug(4, "Pkgdb: running '%s'", str);
+
	sqlite3_free(str);

	while ((ret = sqlite3_step(stmt)) == SQLITE_ROW) {
		pkg_addscript(pkg, sqlite3_column_text(stmt, 0),
modified src/create.c
@@ -322,10 +322,14 @@ exec_create(int argc, char **argv)
	if (ts != (time_t)-1)
		pkg_create_set_timestamp(pc, ts);

-
	if (metadatadir == NULL && manifest == NULL)
-
		return (pkg_create_matches(argc, argv, match, pc) == EPKG_OK ? EXIT_SUCCESS : EXIT_FAILURE);
+
	if (metadatadir == NULL && manifest == NULL) {
+
		ret = pkg_create_matches(argc, argv, match, pc);
+
		pkg_create_free(pc);
+
		return (ret == EPKG_OK ? EXIT_SUCCESS : EXIT_FAILURE);
+
	}
	ret = pkg_create(pc, metadatadir != NULL ? metadatadir : manifest, plist,
	    hash);
+
	pkg_create_free(pc);
	if (ret == EPKG_EXIST || ret == EPKG_OK)
		return (EXIT_SUCCESS);
	return (EXIT_FAILURE);