git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 16/22] builtin/repack: fix leaking line buffer when packing promisors

From
Patrick Steinhardt <ps@pks.im>
Date
Sep 5, 2024, 10:09 UTC
Message-ID
<78c1e5e1772d8920859588c4eaf67faab0b5730e.1725530720.git.ps@pks.im>
In-Reply-To
<cover.1725530720.git.ps@pks.im>

In `repack_promisor_objects()` we read output from git-pack-objects(1) line by line, using `strbuf_getline_lf()`. We never free the line buffer, causing a memory leak. Plug it.

This leak is being hit in t5616, but plugging it alone is not sufficient to make the whole test suite leak free.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
 builtin/repack.c | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/builtin/repack.c b/builtin/repack.c
index 8bb875532b4..a382754feee 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 {
-- 
2.46.0.519.g2e7b89e038.dirty
Previous: Patrick SteinhardtNext: Patrick Steinhardt
Message 62 of 70 in “Memory leak fixes (pt.6)”
  1. 00/22 Memory leak fixes (pt.6)Patrick Steinhardt, Aug 26, 2024
  2. 01/22 t/test-lib: allow skipping leak checks for passing testsPatrick Steinhardt, Aug 26, 2024
  3. Junio C HamanoAug 27, 2024
  4. Toon claesAug 29, 2024
  5. Patrick SteinhardtAug 30, 2024
  6. 02/22 fetch-pack: fix memory leaks on fetch negotiationPatrick Steinhardt, Aug 26, 2024
  7. 03/22 send-pack: fix leaking common object IDsPatrick Steinhardt, Aug 26, 2024
  8. 04/22 builtin/push: fix leaking refspec query resultPatrick Steinhardt, Aug 26, 2024
  9. Junio C HamanoAug 30, 2024
  10. Patrick SteinhardtSep 2, 2024
  11. 05/22 upload-pack: fix leaking child process data on reachability checksPatrick Steinhardt, Aug 26, 2024
  12. Junio C HamanoAug 30, 2024
  13. 06/22 submodule: fix leaking fetch task dataPatrick Steinhardt, Aug 26, 2024
  14. 07/22 builtin/submodule--helper: fix leaking refs on push-checkPatrick Steinhardt, Aug 26, 2024
  15. 08/22 remote: fix leaking tracking refsPatrick Steinhardt, Aug 26, 2024
  16. Junio C HamanoSep 4, 2024
  17. 09/22 remote: fix leak in reachability check of a remote-tracking refPatrick Steinhardt, Aug 26, 2024
  18. 10/22 send-pack: fix leaking push cert noncePatrick Steinhardt, Aug 26, 2024
  19. Junio C HamanoSep 4, 2024
  20. 11/22 gpg-interface: fix misdesigned signing key interfacesPatrick Steinhardt, Aug 26, 2024
  21. Junio C HamanoSep 4, 2024
  22. 12/22 object: clear grafts when clearing parsed object poolPatrick Steinhardt, Aug 26, 2024
  23. 13/22 shallow: free grafts when unregistering themPatrick Steinhardt, Aug 26, 2024
  24. 14/22 shallow: fix leaking members of `struct shallow_info`Patrick Steinhardt, Aug 26, 2024
  25. Toon claesAug 29, 2024
  26. Junio C HamanoAug 29, 2024
  27. Patrick SteinhardtAug 30, 2024
  28. 15/22 negotiator/skipping: fix leaking commit entriesPatrick Steinhardt, Aug 26, 2024
  29. Calvin WanAug 28, 2024
  30. Josh SteadmonAug 28, 2024
  31. Patrick SteinhardtAug 29, 2024
  32. Calvin WanAug 29, 2024
  33. 16/22 builtin/repack: fix leaking line buffer when packing promisorsPatrick Steinhardt, Aug 26, 2024
  34. Junio C HamanoSep 4, 2024
  35. 17/22 builtin/pack-objects: plug leaking list of keep-packsPatrick Steinhardt, Aug 26, 2024
  36. 18/22 builtin/grep: fix leaking object contextPatrick Steinhardt, Aug 26, 2024
  37. Junio C HamanoSep 4, 2024
  38. 19/22 builtin/fmt-merge-msg: fix leaking buffersPatrick Steinhardt, Aug 26, 2024
  39. 20/22 match-trees: fix leaking prefixes in `shift_tree()`Patrick Steinhardt, Aug 26, 2024
  40. Junio C HamanoSep 4, 2024
  41. 21/22 merge-ort: fix two leaks when handling directory rename modificationsPatrick Steinhardt, Aug 26, 2024
  42. Junio C HamanoSep 4, 2024
  43. Elijah NewrenSep 5, 2024
  44. 22/22 builtin/repack: fix leaking keep-pack listPatrick Steinhardt, Aug 26, 2024
  45. Junio C HamanoSep 4, 2024
  46. 00/22 Memory leak fixes (pt.6)Patrick Steinhardt, Sep 5, 2024
  47. 01/22 t/test-lib: allow skipping leak checks for passing testsPatrick Steinhardt, Sep 5, 2024
  48. 02/22 fetch-pack: fix memory leaks on fetch negotiationPatrick Steinhardt, Sep 5, 2024
  49. 03/22 send-pack: fix leaking common object IDsPatrick Steinhardt, Sep 5, 2024
  50. 04/22 builtin/push: fix leaking refspec query resultPatrick Steinhardt, Sep 5, 2024
  51. 05/22 upload-pack: fix leaking child process data on reachability checksPatrick Steinhardt, Sep 5, 2024
  52. 06/22 submodule: fix leaking fetch task dataPatrick Steinhardt, Sep 5, 2024
  53. 07/22 builtin/submodule--helper: fix leaking refs on push-checkPatrick Steinhardt, Sep 5, 2024
  54. 08/22 remote: fix leaking tracking refsPatrick Steinhardt, Sep 5, 2024
  55. 09/22 remote: fix leak in reachability check of a remote-tracking refPatrick Steinhardt, Sep 5, 2024
  56. 10/22 send-pack: fix leaking push cert noncePatrick Steinhardt, Sep 5, 2024
  57. 11/22 gpg-interface: fix misdesigned signing key interfacesPatrick Steinhardt, Sep 5, 2024
  58. 12/22 object: clear grafts when clearing parsed object poolPatrick Steinhardt, Sep 5, 2024
  59. 13/22 shallow: free grafts when unregistering themPatrick Steinhardt, Sep 5, 2024
  60. 14/22 shallow: fix leaking members of `struct shallow_info`Patrick Steinhardt, Sep 5, 2024
  61. 15/22 negotiator/skipping: fix leaking commit entriesPatrick Steinhardt, Sep 5, 2024
  62. 16/22 builtin/repack: fix leaking line buffer when packing promisorsPatrick Steinhardt, Sep 5, 2024
  63. 17/22 builtin/pack-objects: plug leaking list of keep-packsPatrick Steinhardt, Sep 5, 2024
  64. 18/22 builtin/grep: fix leaking object contextPatrick Steinhardt, Sep 5, 2024
  65. 19/22 builtin/fmt-merge-msg: fix leaking buffersPatrick Steinhardt, Sep 5, 2024
  66. 20/22 match-trees: fix leaking prefixes in `shift_tree()`Patrick Steinhardt, Sep 5, 2024
  67. 21/22 merge-ort: fix two leaks when handling directory rename modificationsPatrick Steinhardt, Sep 5, 2024
  68. 22/22 builtin/repack: fix leaking keep-pack listPatrick Steinhardt, Sep 5, 2024
  69. Junio C HamanoSep 8, 2024
  70. Junio C HamanoSep 12, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.