diff options
| author | Taylor Blau <me@ttaylorr.com> | 2024-10-18 13:56:24 -0400 |
|---|---|---|
| committer | Taylor Blau <me@ttaylorr.com> | 2024-10-18 13:56:24 -0400 |
| commit | 728ae63c05398a9489797353d195dde874c074db (patch) | |
| tree | 18b80400159e5934ec8e2396ec452fe1da88e992 | |
| parent | 645cc7a2a7274a92403d2848ef643a96f1589d09 (diff) | |
| parent | 6dab49b9fbbb63a5f58a3cc6e2295f01b1f628f0 (diff) | |
| download | git-728ae63c05398a9489797353d195dde874c074db.tar.gz | |
Merge branch 'tc/bundle-uri-leakfix'
Leakfix.
* tc/bundle-uri-leakfix:
bundle-uri: plug leak in unbundle_from_file()
| -rw-r--r-- | bundle-uri.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/bundle-uri.c b/bundle-uri.c index 4b1a2e2937..0df66e2872 100644 --- a/bundle-uri.c +++ b/bundle-uri.c @@ -368,17 +368,23 @@ static int unbundle_from_file(struct repository *r, const char *file) struct strbuf bundle_ref = STRBUF_INIT; size_t bundle_prefix_len; - if ((bundle_fd = read_bundle_header(file, &header)) < 0) - return 1; + bundle_fd = read_bundle_header(file, &header); + if (bundle_fd < 0) { + result = 1; + goto cleanup; + } /* * Skip the reachability walk here, since we will be adding * a reachable ref pointing to the new tips, which will reach * the prerequisite commits. */ - if ((result = unbundle(r, &header, bundle_fd, NULL, - VERIFY_BUNDLE_QUIET | (fetch_pack_fsck_objects() ? VERIFY_BUNDLE_FSCK : 0)))) - return 1; + result = unbundle(r, &header, bundle_fd, NULL, + VERIFY_BUNDLE_QUIET | (fetch_pack_fsck_objects() ? VERIFY_BUNDLE_FSCK : 0)); + if (result) { + result = 1; + goto cleanup; + } /* * Convert all refs/heads/ from the bundle into refs/bundles/ @@ -407,6 +413,8 @@ static int unbundle_from_file(struct repository *r, const char *file) 0, UPDATE_REFS_MSG_ON_ERR); } +cleanup: + strbuf_release(&bundle_ref); bundle_header_release(&header); return result; } |
