diff options
author | Laurent Bercot <ska-skaware@skarnet.org> | 2017-02-21 12:05:07 +0000 |
---|---|---|
committer | Laurent Bercot <ska-skaware@skarnet.org> | 2017-02-21 12:05:07 +0000 |
commit | 49d8fa1058aaf23c29e074b2314492ae40d2f557 (patch) | |
tree | 393f884d5a99f984e992a0f35f1b02ac43536217 /src/libstddjb/cdb_init_map.c | |
parent | fdffefb8032922ce7ffe4c00816072a8ff2148fc (diff) | |
download | skalibs-49d8fa1058aaf23c29e074b2314492ae40d2f557.tar.xz |
Types change: big pass on libstddjb and libunixonacid
libdatastruct still missing, library still not functional
Diffstat (limited to 'src/libstddjb/cdb_init_map.c')
-rw-r--r-- | src/libstddjb/cdb_init_map.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/libstddjb/cdb_init_map.c b/src/libstddjb/cdb_init_map.c index bf8eb9d..de9aad0 100644 --- a/src/libstddjb/cdb_init_map.c +++ b/src/libstddjb/cdb_init_map.c @@ -1,8 +1,14 @@ /* ISC license. */ +#ifndef _BSD_SOURCE +#define _BSD_SOURCE +#endif + #include <sys/types.h> #include <sys/stat.h> #include <sys/mman.h> +#include <stdint.h> +#include <errno.h> #include <skalibs/cdb.h> int cdb_init_map (struct cdb *c, int fd, int domap) @@ -12,6 +18,7 @@ int cdb_init_map (struct cdb *c, int fd, int domap) struct stat st ; char *map ; if (fstat(fd, &st) < 0) return 0 ; + if (st.st_size > UINT32_MAX) return (errno = EOVERFLOW, 0) ; map = mmap(0, st.st_size, PROT_READ, MAP_SHARED, fd, 0) ; if (map == MAP_FAILED) return 0 ; c->fd = -fd-2 ; |