diff options
author | Patrick Steinhardt <ps@pks.im> | 2016-03-10 10:40:47 +0100 |
---|---|---|
committer | Patrick Steinhardt <ps@pks.im> | 2016-03-11 13:30:33 +0100 |
commit | 1a8c11f44356e7b1379b3bced5bbf86fce576c28 (patch) | |
tree | 7d6041ebfc81d4cc9ae97e27ec45bc5d50c007e9 /src | |
parent | 486302d6af009d8c62fa1bd1d5b1ff2b36c31189 (diff) | |
download | libgit2-1a8c11f44356e7b1379b3bced5bbf86fce576c28.tar.gz |
diff_tform: fix potential NULL pointer access
When the user passes in a diff which has no repository associated
we may call `git_config__get_int_force` with a NULL-pointer
configuration. Even though `git_config__get_int_force` is
designed to swallow errors, it is not intended to be called with
a NULL pointer configuration.
Fix the issue by only calling `git_config__get_int_force` only
when configuration could be retrieved from the repository.
Diffstat (limited to 'src')
-rw-r--r-- | src/diff_tform.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/diff_tform.c b/src/diff_tform.c index 8577f06b8..6a6a62811 100644 --- a/src/diff_tform.c +++ b/src/diff_tform.c @@ -261,7 +261,7 @@ static int normalize_find_opts( if (!given || (given->flags & GIT_DIFF_FIND_ALL) == GIT_DIFF_FIND_BY_CONFIG) { - if (diff->repo) { + if (cfg) { char *rule = git_config__get_string_force(cfg, "diff.renames", "true"); int boolval; @@ -318,8 +318,10 @@ static int normalize_find_opts( #undef USE_DEFAULT if (!opts->rename_limit) { - opts->rename_limit = git_config__get_int_force( - cfg, "diff.renamelimit", DEFAULT_RENAME_LIMIT); + if (cfg) { + opts->rename_limit = git_config__get_int_force( + cfg, "diff.renamelimit", DEFAULT_RENAME_LIMIT); + } if (opts->rename_limit <= 0) opts->rename_limit = DEFAULT_RENAME_LIMIT; |