summaryrefslogtreecommitdiff
path: root/src/diff_patch.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/diff_patch.c')
-rw-r--r--src/diff_patch.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/diff_patch.c b/src/diff_patch.c
index a15107753..f5eecae66 100644
--- a/src/diff_patch.c
+++ b/src/diff_patch.c
@@ -388,8 +388,18 @@ static int diff_patch_with_delta_alloc(
diff_patch_with_delta *pd;
size_t old_len = *old_path ? strlen(*old_path) : 0;
size_t new_len = *new_path ? strlen(*new_path) : 0;
+ size_t alloc_len = sizeof(*pd);
- *out = pd = git__calloc(1, sizeof(*pd) + old_len + new_len + 2);
+ GITERR_CHECK_ALLOC_ADD(alloc_len, old_len);
+ alloc_len += old_len;
+
+ GITERR_CHECK_ALLOC_ADD(alloc_len, new_len);
+ alloc_len += new_len;
+
+ GITERR_CHECK_ALLOC_ADD(alloc_len, 2);
+ alloc_len += 2;
+
+ *out = pd = git__calloc(1, alloc_len);
GITERR_CHECK_ALLOC(pd);
pd->patch.flags = GIT_DIFF_PATCH_ALLOCATED;