Skip to content

Commit

Permalink
trace2: prevent segfault on config collection where no value specified
Browse files Browse the repository at this point in the history
When TRACE2 analytics is enabled, a git config option that has no value
causes a segfault.

Steps to Reproduce
GIT_TRACE2=true GIT_TRACE2_CONFIG_PARAMS=status.*
git -c status.relativePaths version
Expected Result
git version 2.46.0
Actual Result
zsh: segmentation fault GIT_TRACE2=true

This adds a null check to prevent the segfault and instead return
the "empty config value" error.

Signed-off-by: Adam Murray <[email protected]>
  • Loading branch information
ad-murray committed Nov 6, 2024
1 parent 8f8d6ee commit 24ba9db
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 1 deletion.
8 changes: 8 additions & 0 deletions t/t0210-trace2-normal.sh
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,14 @@ test_expect_success 'bug messages followed by BUG() are written to trace2' '
test_cmp expect actual
'

test_expect_success 'empty configuration values are handled' '
test_when_finished "rm trace2.normal actual expect" &&
echo >expect &&
GIT_TRACE2="$(pwd)/trace2.normal" GIT_TRACE2_CONFIG_PARAMS=foo.empty \
git -c foo.empty config foo.empty >actual &&
test_cmp expect actual
'

sane_unset GIT_TRACE2_BRIEF

# Now test without environment variables and get all Trace2 settings
Expand Down
2 changes: 1 addition & 1 deletion trace2.c
Original file line number Diff line number Diff line change
Expand Up @@ -759,7 +759,7 @@ void trace2_def_param_fl(const char *file, int line, const char *param,
int j;
const char *redacted;

if (!trace2_enabled)
if (!trace2_enabled || !value)
return;

redacted = redact_arg(value);
Expand Down

0 comments on commit 24ba9db

Please sign in to comment.