Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Clean up a few more resource leaks
Brad Davis committed 8 years ago
commit aac2e6922ddc6c18480eb801154f4bfd36f64faa
parent 90c379d
1 file changed +8 -3
modified libpkg/pkg_add.c
@@ -1315,8 +1315,10 @@ pkg_add_fromdir(struct pkg *pkg, const char *src)
#endif
#endif

-
		if (create_dir(pkg, d) == EPKG_FATAL)
-
			return (EPKG_FATAL);
+
		if (create_dir(pkg, d) == EPKG_FATAL) {
+
			retcode = EPKG_FATAL;
+
			goto cleanup;
+
		}
	}

	hardlinks = kh_init_hls();
@@ -1374,6 +1376,8 @@ pkg_add_fromdir(struct pkg *pkg, const char *src)
			if ((link_len = readlinkat(fromfd,
			    RELATIVE_PATH(f->path), target,
			    sizeof(target))) == -1) {
+
				kh_destroy_hls(hardlinks);
+
				close(fromfd);
				pkg_fatal_errno("Impossible to read symlinks "
				    "'%s'", f->path);
			}
@@ -1408,7 +1412,8 @@ pkg_add_fromdir(struct pkg *pkg, const char *src)
			close(fd);
		} else {
			pkg_emit_error("Invalid file type");
-
			return (EPKG_FATAL);
+
			retcode = EPKG_FATAL;
+
			goto cleanup;
		}
	}