summaryrefslogtreecommitdiff
path: root/src/libstddjb/cdb_init_map.c
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2017-02-21 12:05:07 +0000
committerLaurent Bercot <ska-skaware@skarnet.org>2017-02-21 12:05:07 +0000
commit49d8fa1058aaf23c29e074b2314492ae40d2f557 (patch)
tree393f884d5a99f984e992a0f35f1b02ac43536217 /src/libstddjb/cdb_init_map.c
parentfdffefb8032922ce7ffe4c00816072a8ff2148fc (diff)
downloadskalibs-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.c7
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 ;