Commit 0ee7a4dc0068ae010131e514f6464c5134f0353e

Stefan Sperling 2022-01-26T10:33:21

fix double-free and double-close issues in error paths of got_packidx_open()

diff --git a/lib/pack.c b/lib/pack.c
index d023ca6..8a01d22 100644
--- a/lib/pack.c
+++ b/lib/pack.c
@@ -371,21 +371,16 @@ got_packidx_open(struct got_packidx **packidx,
 	p->fd = openat(dir_fd, relpath, O_RDONLY | O_NOFOLLOW | O_CLOEXEC);
 	if (p->fd == -1) {
 		err = got_error_from_errno2("openat", relpath);
-		free(p);
 		goto done;
 	}
 
 	if (fstat(p->fd, &idx_sb) != 0) {
 		err = got_error_from_errno2("fstat", relpath);
-		close(p->fd);
-		free(p);
 		goto done;
 	}
 	p->len = idx_sb.st_size;
 	if (p->len < sizeof(p->hdr)) {
 		err = got_error(GOT_ERR_BAD_PACKIDX);
-		close(p->fd);
-		free(p);
 		goto done;
 	}