aboutsummaryrefslogtreecommitdiffstats
path: root/builtin
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2024-09-20 11:16:30 -0700
committerJunio C Hamano <gitster@pobox.com>2024-09-20 11:16:30 -0700
commit16c0906e8cd9b32b95dfe68058bcdaad3e4458e4 (patch)
tree5eb2fce820151a347514e6a60c9162c10184256e /builtin
parentMerge branch 'pw/rebase-autostash-fix' (diff)
parentbuiltin/repack: fix leaking keep-pack list (diff)
downloadgit-16c0906e8cd9b32b95dfe68058bcdaad3e4458e4.tar.gz
git-16c0906e8cd9b32b95dfe68058bcdaad3e4458e4.zip
Merge branch 'ps/leakfixes-part-6'
More leakfixes. * ps/leakfixes-part-6: (22 commits) builtin/repack: fix leaking keep-pack list merge-ort: fix two leaks when handling directory rename modifications match-trees: fix leaking prefixes in `shift_tree()` builtin/fmt-merge-msg: fix leaking buffers builtin/grep: fix leaking object context builtin/pack-objects: plug leaking list of keep-packs builtin/repack: fix leaking line buffer when packing promisors negotiator/skipping: fix leaking commit entries shallow: fix leaking members of `struct shallow_info` shallow: free grafts when unregistering them object: clear grafts when clearing parsed object pool gpg-interface: fix misdesigned signing key interfaces send-pack: fix leaking push cert nonce remote: fix leak in reachability check of a remote-tracking ref remote: fix leaking tracking refs builtin/submodule--helper: fix leaking refs on push-check submodule: fix leaking fetch task data upload-pack: fix leaking child process data on reachability checks builtin/push: fix leaking refspec query result send-pack: fix leaking common object IDs ...
Diffstat (limited to 'builtin')
-rw-r--r--builtin/fmt-merge-msg.c2
-rw-r--r--builtin/grep.c1
-rw-r--r--builtin/pack-objects.c1
-rw-r--r--builtin/push.c8
-rw-r--r--builtin/repack.c3
-rw-r--r--builtin/submodule--helper.c2
-rw-r--r--builtin/tag.c3
7 files changed, 16 insertions, 4 deletions
diff --git a/builtin/fmt-merge-msg.c b/builtin/fmt-merge-msg.c
index 957786d1b3..0b162f8fab 100644
--- a/builtin/fmt-merge-msg.c
+++ b/builtin/fmt-merge-msg.c
@@ -67,6 +67,8 @@ int cmd_fmt_merge_msg(int argc, const char **argv, const char *prefix)
return ret;
write_in_full(STDOUT_FILENO, output.buf, output.len);
+ strbuf_release(&input);
+ strbuf_release(&output);
free(inpath);
return 0;
}
diff --git a/builtin/grep.c b/builtin/grep.c
index dfc3c3e8bd..dda4582d64 100644
--- a/builtin/grep.c
+++ b/builtin/grep.c
@@ -1133,6 +1133,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
&oid, &oc)) {
if (seen_dashdash)
die(_("unable to resolve revision: %s"), arg);
+ object_context_release(&oc);
break;
}
diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c
index c6e2852d3c..01479a9ccc 100644
--- a/builtin/pack-objects.c
+++ b/builtin/pack-objects.c
@@ -4669,6 +4669,7 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
cleanup:
clear_packing_data(&to_pack);
list_objects_filter_release(&filter_options);
+ string_list_clear(&keep_pack_list, 0);
strvec_clear(&rp);
return 0;
diff --git a/builtin/push.c b/builtin/push.c
index 7a67398124..0b123eb9c1 100644
--- a/builtin/push.c
+++ b/builtin/push.c
@@ -72,13 +72,15 @@ static void refspec_append_mapped(struct refspec *refspec, const char *ref,
const char *branch_name;
if (remote->push.nr) {
- struct refspec_item query;
- memset(&query, 0, sizeof(struct refspec_item));
- query.src = matched->name;
+ struct refspec_item query = {
+ .src = matched->name,
+ };
+
if (!query_refspecs(&remote->push, &query) && query.dst) {
refspec_appendf(refspec, "%s%s:%s",
query.force ? "+" : "",
query.src, query.dst);
+ free(query.dst);
return;
}
}
diff --git a/builtin/repack.c b/builtin/repack.c
index 8bb875532b..3ee8cfa732 100644
--- a/builtin/repack.c
+++ b/builtin/repack.c
@@ -425,9 +425,11 @@ static void repack_promisor_objects(const struct pack_objects_args *args,
free(promisor_name);
}
+
fclose(out);
if (finish_command(&cmd))
die(_("could not finish pack-objects to repack promisor objects"));
+ strbuf_release(&line);
}
struct pack_geometry {
@@ -1541,6 +1543,7 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
}
cleanup:
+ string_list_clear(&keep_pack_list, 0);
string_list_clear(&names, 1);
existing_packs_release(&existing);
free_pack_geometry(&geometry);
diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index 3e0b6c45c0..e5ba05ab8c 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -2958,7 +2958,9 @@ static int push_check(int argc, const char **argv, const char *prefix UNUSED)
rs->src);
}
}
+
refspec_clear(&refspec);
+ free_refs(local_refs);
}
free(head);
diff --git a/builtin/tag.c b/builtin/tag.c
index 607e48e311..59829aa26d 100644
--- a/builtin/tag.c
+++ b/builtin/tag.c
@@ -160,7 +160,7 @@ static int do_sign(struct strbuf *buffer, struct object_id **compat_oid,
const struct git_hash_algo *compat = the_repository->compat_hash_algo;
struct strbuf sig = STRBUF_INIT, compat_sig = STRBUF_INIT;
struct strbuf compat_buf = STRBUF_INIT;
- const char *keyid = get_signing_key();
+ char *keyid = get_signing_key();
int ret = -1;
if (sign_buffer(buffer, &sig, keyid))
@@ -190,6 +190,7 @@ out:
strbuf_release(&sig);
strbuf_release(&compat_sig);
strbuf_release(&compat_buf);
+ free(keyid);
return ret;
}