diff options
| author | Russell Belfer <arrbee@arrbee.com> | 2012-03-12 23:06:31 -0700 |
|---|---|---|
| committer | Russell Belfer <arrbee@arrbee.com> | 2012-03-12 23:06:31 -0700 |
| commit | 1736799d2a15d912cfc46b7089c2bff02a1cbd0e (patch) | |
| tree | f62eefbbec954882658b7ce4b783992d6487484f | |
| parent | e1de726c15937a8dbf81d12ef0c872cf6576ebd0 (diff) | |
| download | libgit2-1736799d2a15d912cfc46b7089c2bff02a1cbd0e.tar.gz | |
Add map.c with shared p_mmap param validation
Forgot to add this file in the previous commit
| -rw-r--r-- | src/map.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/map.c b/src/map.c new file mode 100644 index 000000000..56a37f3f6 --- /dev/null +++ b/src/map.c @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2009-2012 the libgit2 contributors + * + * This file is part of libgit2, distributed under the GNU GPL v2 with + * a Linking Exception. For full terms see the included COPYING file. + */ +#include <git2/common.h> +#include "map.h" + +int validate_map_args( + git_map *out, size_t len, int prot, int flags, int fd, git_off_t offset) +{ + GIT_UNUSED(fd); + GIT_UNUSED(offset); + + if (out == NULL || len == 0) { + errno = EINVAL; + giterr_set(GITERR_OS, "Failed to mmap. No map or zero length"); + return -1; + } + + if (!(prot & GIT_PROT_WRITE) && !(prot & GIT_PROT_READ)) { + errno = EINVAL; + giterr_set(GITERR_OS, "Failed to mmap. Invalid protection parameters"); + return -1; + } + + if (flags & GIT_MAP_FIXED) { + errno = EINVAL; + giterr_set(GITERR_OS, "Failed to mmap. FIXED not set"); + return -1; + } + + return 0; +} + |
