commit 98ef866ec0f35402a87bb0e50550f3ead86cc117 from: Omar Polo via: Thomas Adam date: Mon Jul 10 19:47:38 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 - 930d88fe56d55ca98351b3109796db11af42e7b1 commit + 98ef866ec0f35402a87bb0e50550f3ead86cc117 blob - c5cbff1e5a5e603896233f86eb2b3dfd1c8a49d1 blob + b677fb09af65bc9d83f1689fa013d968f88a89a6 --- lib/fetch.c +++ lib/fetch.c @@ -396,13 +396,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; + } } /*