Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Properly close the archives before freeing them
Baptiste Daroussin committed 12 years ago
commit e607395a5a5e6d9883c7418f4a2e572f2b0c5444
parent acc16cd
3 files changed +9 -1
modified libpkg/packing.c
@@ -75,7 +75,9 @@ packing_init(struct packing **pack, const char *path, pkg_formats format)
		archive_write_set_format_pax_restricted((*pack)->awrite);
		ext = packing_set_format((*pack)->awrite, format);
		if (ext == NULL) {
+
			archive_read_close((*pack)->aread);
			archive_read_free((*pack)->aread);
+
			archive_write_close((*pack)->awrite);
			archive_write_free((*pack)->awrite);
			*pack = NULL;
			return EPKG_FATAL; /* error set by _set_format() */
@@ -88,7 +90,9 @@ packing_init(struct packing **pack, const char *path, pkg_formats format)
		    (*pack)->awrite, archive_path) != ARCHIVE_OK) {
			pkg_emit_errno("archive_write_open_filename",
			    archive_path);
+
			archive_read_close((*pack)->aread);
			archive_read_free((*pack)->aread);
+
			archive_write_close((*pack)->awrite);
			archive_write_free((*pack)->awrite);
			*pack = NULL;
			return EPKG_FATAL;
@@ -329,6 +333,7 @@ packing_finish(struct packing *pack)
{
	assert(pack != NULL);

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

	archive_write_close(pack->awrite);
modified libpkg/update.c
@@ -406,8 +406,10 @@ cleanup:
	if (rc != EPKG_OK && dest != NULL)
		unlink(dest);

-
	if (a != NULL)
+
	if (a != NULL) {
+
		archive_read_close(a);
		archive_read_free(a);
+
	}

	return rc;
}
modified pkg/audit.c
@@ -210,6 +210,7 @@ fetch_and_extract(const char *src, const char *dest, bool xml)
#if ARCHIVE_VERSION_NUMBER < 3000002
		archive_read_finish(a);
#else
+
		archive_read_close(a);
		archive_read_free(a);
#endif
	if (fd >= 0)