summaryrefslogtreecommitdiff
path: root/transport.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2022-09-14 19:56:40 (GMT)
committerJunio C Hamano <gitster@pobox.com>2022-09-14 19:56:40 (GMT)
commit08d61c70613fc340d983283fc6c3b2e4059bb58b (patch)
treed39f5ad40e63cb621842628347b10d4186a1ac4d /transport.c
parentb563638d2cf5d02af72447495a4d4173c6d1cd33 (diff)
parent66eede4a37c3e17ccadbd99fe0f07a4a133d495d (diff)
downloadgit-08d61c70613fc340d983283fc6c3b2e4059bb58b.zip
git-08d61c70613fc340d983283fc6c3b2e4059bb58b.tar.gz
git-08d61c70613fc340d983283fc6c3b2e4059bb58b.tar.bz2
Merge branch 'jk/plug-list-object-filter-leaks'
The code that manages list-object-filter structure, used in partial clones, leaked the instances, which has been plugged. * jk/plug-list-object-filter-leaks: prepare_repo_settings(): plug leak of config values list_objects_filter_options: plug leak of filter_spec strings transport: free filter options in disconnect_git() transport: deep-copy object-filter struct for fetch-pack list_objects_filter_copy(): deep-copy sparse_oid_name field
Diffstat (limited to 'transport.c')
-rw-r--r--transport.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/transport.c b/transport.c
index 999212d..1687ad7 100644
--- a/transport.c
+++ b/transport.c
@@ -386,7 +386,8 @@ static int fetch_refs_via_pack(struct transport *transport,
args.cloning = transport->cloning;
args.update_shallow = data->options.update_shallow;
args.from_promisor = data->options.from_promisor;
- args.filter_options = data->options.filter_options;
+ list_objects_filter_copy(&args.filter_options,
+ &data->options.filter_options);
args.refetch = data->options.refetch;
args.stateless_rpc = transport->stateless_rpc;
args.server_options = transport->server_options;
@@ -453,6 +454,7 @@ cleanup:
free_refs(refs_tmp);
free_refs(refs);
+ list_objects_filter_release(&args.filter_options);
return ret;
}
@@ -893,6 +895,7 @@ static int disconnect_git(struct transport *transport)
finish_connect(data->conn);
}
+ list_objects_filter_release(&data->options.filter_options);
free(data);
return 0;
}