From aad0bd6bc78b79bb8c0778c0c135c167d359fe12 Mon Sep 17 00:00:00 2001 From: Stefan Sperling Date: Mon, 3 Nov 2014 13:46:56 +0100 Subject: [PATCH] Fix segmentation fault observed on OpenBSD/sparc64 A non-readable mapping of a file causes an access violation in the pack tests. Always use PROT_READ to work around this. --- src/unix/map.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/unix/map.c b/src/unix/map.c index 0a235d5a1..87ee6594b 100644 --- a/src/unix/map.c +++ b/src/unix/map.c @@ -26,7 +26,7 @@ int git__page_size(size_t *page_size) int p_mmap(git_map *out, size_t len, int prot, int flags, int fd, git_off_t offset) { - int mprot = 0; + int mprot = PROT_READ; int mflag = 0; GIT_MMAP_VALIDATE(out, len, prot, flags); @@ -35,9 +35,7 @@ int p_mmap(git_map *out, size_t len, int prot, int flags, int fd, git_off_t offs out->len = 0; if (prot & GIT_PROT_WRITE) - mprot = PROT_WRITE; - else if (prot & GIT_PROT_READ) - mprot = PROT_READ; + mprot |= PROT_WRITE; if ((flags & GIT_MAP_TYPE) == GIT_MAP_SHARED) mflag = MAP_SHARED;