summaryrefslogtreecommitdiff
path: root/compat/mmap.c
diff options
context:
space:
mode:
authorLibravatar René Scharfe <l.s.r@web.de>2021-08-21 14:52:40 +0200
committerLibravatar Junio C Hamano <gitster@pobox.com>2021-08-24 14:43:45 -0700
commit95b4ff3931064ff222e87eecf6af504ba55069d7 (patch)
tree4a328ce202ecc18389187d82f51164eadde56311 /compat/mmap.c
parentGit 2.32 (diff)
downloadtgif-95b4ff3931064ff222e87eecf6af504ba55069d7.tar.xz
compat: let git_mmap use malloc(3) directly
xmalloc() dies on error, allows zero-sized allocations and enforces GIT_ALLOC_LIMIT for testing. Our mmap replacement doesn't need any of that. Let's cut out the wrapper, reject zero-sized requests as required by POSIX and use malloc(3) directly. Allocation errors were needlessly handled by git_mmap() before; this code becomes reachable now. Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'compat/mmap.c')
-rw-r--r--compat/mmap.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/compat/mmap.c b/compat/mmap.c
index 14d31010df..8d6c02d4bc 100644
--- a/compat/mmap.c
+++ b/compat/mmap.c
@@ -7,7 +7,12 @@ void *git_mmap(void *start, size_t length, int prot, int flags, int fd, off_t of
if (start != NULL || flags != MAP_PRIVATE || prot != PROT_READ)
die("Invalid usage of mmap when built with NO_MMAP");
- start = xmalloc(length);
+ if (length == 0) {
+ errno = EINVAL;
+ return MAP_FAILED;
+ }
+
+ start = malloc(length);
if (start == NULL) {
errno = ENOMEM;
return MAP_FAILED;