commit a3287e9971f6990ab19426fccf0b41a9b6bc4b68 from: Omar Polo date: Sat Jul 08 18:22:02 2023 UTC plug leak in got_fetch_pack error path set err and goto done instead of an early return that leaks various things. ok jrick commit - 21002b1b278e14573f85a3ec87c2aa5b8da47f49 commit + a3287e9971f6990ab19426fccf0b41a9b6bc4b68 blob - 15eea55419c93fd724e16e8904ae2506a727a5e2 blob + 01e7893cec3468e0e1ae5f8b42784f825b1ef92d --- lib/fetch.c +++ lib/fetch.c @@ -401,13 +401,17 @@ got_fetch_pack(struct got_object_id **pack_hash, struc } nobj = be32toh(pack_hdr.nobjects); if (nobj == 0 && - packfile_size > ssizeof(pack_hdr) + SHA1_DIGEST_LENGTH) - return got_error_msg(GOT_ERR_BAD_PACKFILE, + packfile_size > ssizeof(pack_hdr) + SHA1_DIGEST_LENGTH) { + err = got_error_msg(GOT_ERR_BAD_PACKFILE, "bad pack file with zero objects"); - if (nobj != 0 && - packfile_size <= ssizeof(pack_hdr) + SHA1_DIGEST_LENGTH) - return got_error_msg(GOT_ERR_BAD_PACKFILE, + goto done; + } + if (nobj != 0 && + packfile_size <= ssizeof(pack_hdr) + SHA1_DIGEST_LENGTH) { + err = got_error_msg(GOT_ERR_BAD_PACKFILE, "empty pack file with non-zero object count"); + goto done; + } } /*