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;
}