diff options
author | Junio C Hamano <gitster@pobox.com> | 2022-09-14 22:56:40 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2022-09-14 22:56:40 +0300 |
commit | 08d61c70613fc340d983283fc6c3b2e4059bb58b (patch) | |
tree | d39f5ad40e63cb621842628347b10d4186a1ac4d /transport.c | |
parent | b563638d2cf5d02af72447495a4d4173c6d1cd33 (diff) | |
parent | 66eede4a37c3e17ccadbd99fe0f07a4a133d495d (diff) |
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.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/transport.c b/transport.c index 999212df97..1687ad7e2c 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; } |