Fix all leaks in t0001
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v3 Latest9 patches 1 replyIn review
- v29 patches 6 repliesSuperseded
- v17 patches 17 repliesSuperseded
Changes in v3 from the cover letter
* Ensures we don't silently change enum values in "parse-options: convert bitfield values to use binary shift". Instead we retain the original values in that patch, and reuse the unused value in a later patch.
* Fixes some silly commit message typos.
Patches in v3 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/9 | symbolic-ref: don't leak shortened refname in check_symref()builtin/ | +3 | 0 replies | |
| 2/9 | reset: free instead of leaking unneeded refbuiltin/ | +1 | 0 replies | |
| 3/9 | clone: free or UNLEAK further pointers when finishedbuiltin/ | +10 | 0 replies | |
| 4/9 | worktree: fix leak in dwim_branch()builtin/ | +6 | 0 replies | |
| 5/9 | init: remove git_init_db_config() while fixing leaksbuiltin/ | +7 | 0 replies | |
| 6/9 | init-db: silence template_dir leak when converting to absolute pathbuiltin/ | +3 | 0 replies | |
| 7/9 | parse-options: convert bitfield values to use binary shiftparse-options.h | +17 | 0 replies | |
| 8/9 | parse-options: don't leak alias help messagesparse-options.c parse-options.h | +19 | 0 replies | |
| 9/9 | transport: also free remote_refs in transport_disconnect()builtin/ builtin/ transport.c | +8 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v3 yet.
Cover letter [PATCH v3 0/9] Fix all leaks in t0001
V3:
* Ensures we don't silently change enum values in "parse-options: convert bitfield values to use binary shift". Instead we retain the original values in that patch, and reuse the unused value in a later patch.
* Fixes some silly commit message typos.
Thanks as always for the sharp-eyed reviews.
ATB, Andrzej
Andrzej Hunt (9):
symbolic-ref: don't leak shortened refname in check_symref()
reset: free instead of leaking unneeded ref
clone: free or UNLEAK further pointers when finished
worktree: fix leak in dwim_branch()
init: remove git_init_db_config() while fixing leaks
init-db: silence template_dir leak when converting to absolute path
parse-options: convert bitfield values to use binary shift
parse-options: don't leak alias help messages
transport: also free remote_refs in transport_disconnect()
builtin/clone.c | 14 ++++++++++---- builtin/init-db.c | 32 ++++++++++---------------------- builtin/ls-remote.c | 4 ++-- builtin/remote.c | 8 ++++---- builtin/reset.c | 2 +- builtin/symbolic-ref.c | 4 +++- builtin/worktree.c | 10 ++++++---- parse-options.c | 19 ++++++++++++++++++- parse-options.h | 35 ++++++++++++++++++----------------- transport.c | 2 ++ 10 files changed, 74 insertions(+), 56 deletions(-)
base-commit: 98164e9585e02e31dcf1377a553efe076c15f8c6
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-899%2Fahunt%2Fleaksan-t0001-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-899/ahunt/leaksan-t0001-v3
Pull-Request: https://github.com/gitgitgadget/git/pull/899
Range-diff vs v2:
1: c7bb403ae381 = 1: 6af157dfed79 symbolic-ref: don't leak shortened refname in check_symref()
2: da05fc72b77a = 2: add6931b2138 reset: free instead of leaking unneeded ref
3: a74bbcae7363 = 3: 40c5c915fc1e clone: free or UNLEAK further pointers when finished
4: a10ab9e68809 = 4: 963f291d5344 worktree: fix leak in dwim_branch()
5: 206a82200ca1 = 5: b615fda790f0 init: remove git_init_db_config() while fixing leaks
6: aa345e50782f = 6: 953cc8f29885 init-db: silence template_dir leak when converting to absolute path
7: 2b03785bd4cb ! 7: c2220434ab2c parse-options: convert bitfield values to use binary shift
@@ Commit message
Also add a trailing comma to the last enum entry to simplify addition of
new flags.
- This changee was originally suggested by Peff in:
+ This change was originally suggested by Peff in:
https://public-inbox.org/git/YEZ%[email protected]/
Signed-off-by: Andrzej Hunt <[email protected]>
@@ parse-options.h: enum parse_opt_type {
+ PARSE_OPT_LASTARG_DEFAULT = 1 << 4,
+ PARSE_OPT_NODASH = 1 << 5,
+ PARSE_OPT_LITERAL_ARGHELP = 1 << 6,
-+ PARSE_OPT_SHELL_EVAL = 1 << 7,
-+ PARSE_OPT_NOCOMPLETE = 1 << 8,
-+ PARSE_OPT_COMP_ARG = 1 << 9,
-+ PARSE_OPT_CMDMODE = 1 << 10,
++ PARSE_OPT_SHELL_EVAL = 1 << 8,
++ PARSE_OPT_NOCOMPLETE = 1 << 9,
++ PARSE_OPT_COMP_ARG = 1 << 10,
++ PARSE_OPT_CMDMODE = 1 << 11,
};
enum parse_opt_result {
8: 4397c1fd8020 ! 8: 6e46cd332023 parse-options: don't leak alias help messages
@@ Commit message
Signed-off-by: Andrzej Hunt <[email protected]>
- fold
-
## parse-options.c ##
@@ parse-options.c: static int show_gitcomp(const struct option *opts, int show_all)
*
@@ parse-options.c: static struct option *preprocess_options(struct parse_opt_ctx_t
+ return;
+
+ for (i = 0; options[i].type != OPTION_END; i++) {
-+ if (options[i].flags & PARSE_OPT_FROM_ALIAS) {
++ if (options[i].flags & PARSE_OPT_FROM_ALIAS)
+ free((void *)options[i].help);
-+ }
+ }
+ free(options);
+}
@@ parse-options.c: int parse_options(int argc, const char **argv, const char *pref
## parse-options.h ##
@@ parse-options.h: enum parse_opt_option_flags {
- PARSE_OPT_NOCOMPLETE = 1 << 8,
- PARSE_OPT_COMP_ARG = 1 << 9,
- PARSE_OPT_CMDMODE = 1 << 10,
-+ PARSE_OPT_FROM_ALIAS = 1 << 11,
- };
-
- enum parse_opt_result {
+ PARSE_OPT_LASTARG_DEFAULT = 1 << 4,
+ PARSE_OPT_NODASH = 1 << 5,
+ PARSE_OPT_LITERAL_ARGHELP = 1 << 6,
++ PARSE_OPT_FROM_ALIAS = 1 << 7,
+ PARSE_OPT_SHELL_EVAL = 1 << 8,
+ PARSE_OPT_NOCOMPLETE = 1 << 9,
+ PARSE_OPT_COMP_ARG = 1 << 10, 9: a907f2460d42 = 9: 50a2b9693aa3 transport: also free remote_refs in transport_disconnect()
Signature · 1 line
gitgitgadget