summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@edwardthomson.com>2023-02-14 11:29:52 +0000
committerGitHub <noreply@github.com>2023-02-14 11:29:52 +0000
commitb3cba8f8c06791d867412473ca8cfed8d89d85e0 (patch)
tree65470a3ff652142589f0de3846ee18b23fc6f151 /src
parentd9d45fb3a174393bac81655171f774048b5424d2 (diff)
parentb755b7d294780bf7dc1c9b5c5fff892ac5f0ec38 (diff)
downloadlibgit2-b3cba8f8c06791d867412473ca8cfed8d89d85e0.tar.gz
Merge pull request #6475 from jorio/fix_diff_empty_untracked_file
diff_file: Fix crash when freeing a patch representing an empty untracked file
Diffstat (limited to 'src')
-rw-r--r--src/libgit2/diff_file.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/libgit2/diff_file.c b/src/libgit2/diff_file.c
index 5f4336658..c2d08675a 100644
--- a/src/libgit2/diff_file.c
+++ b/src/libgit2/diff_file.c
@@ -348,6 +348,13 @@ static int diff_file_content_load_workdir_file(
goto cleanup;
}
+ /* if file is empty, don't attempt to mmap or readbuffer */
+ if (fc->file->size == 0) {
+ fc->map.len = 0;
+ fc->map.data = git_str__initstr;
+ goto cleanup;
+ }
+
if ((diff_opts->flags & GIT_DIFF_SHOW_BINARY) == 0 &&
diff_file_content_binary_by_size(fc))
goto cleanup;