From: Christian Grothoff Date: Thu, 12 Nov 2009 15:45:15 +0000 (+0000) Subject: check properly for mmap failures X-Git-Tag: initial-import-from-subversion-38251~23104 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=4c776c7ec791ad75d9413f5ae098e9e200fd9d07;p=oweals%2Fgnunet.git check properly for mmap failures --- diff --git a/src/util/disk.c b/src/util/disk.c index e280374d3..ce0b2676f 100644 --- a/src/util/disk.c +++ b/src/util/disk.c @@ -1432,6 +1432,10 @@ struct GNUNET_DISK_MapHandle }; +#ifndef MAP_FAILED +#define MAP_FAILED ((void *) -1) +#endif + /** * Map a file into memory * @@ -1498,6 +1502,7 @@ GNUNET_DISK_file_map (const struct GNUNET_DISK_FileHandle *h, return ret; #else int prot; + int ec; prot = 0; if (access & GNUNET_DISK_MAP_TYPE_READ) @@ -1506,6 +1511,14 @@ GNUNET_DISK_file_map (const struct GNUNET_DISK_FileHandle *h, prot |= PROT_WRITE; *m = GNUNET_malloc (sizeof (struct GNUNET_DISK_MapHandle)); (*m)->addr = mmap (NULL, len, prot, MAP_SHARED, h->fd, 0); + GNUNET_assert (NULL != (*m)->addr); + if (MAP_FAILED == (*m)->addr) + { + ec = errno; + GNUNET_free (*m); + errno = ec; + return NULL; + } (*m)->len = len; return (*m)->addr; #endif diff --git a/src/util/test_strings.c b/src/util/test_strings.c index be166e629..107bb746c 100644 --- a/src/util/test_strings.c +++ b/src/util/test_strings.c @@ -90,11 +90,11 @@ check () GNUNET_free (r); return 1; } + GNUNET_free (r); b = GNUNET_STRINGS_to_utf8 ("TEST", 4, "ASCII"); WANT ("TEST", b); b = GNUNET_STRINGS_to_utf8 ("TEST", 4, "unknown"); WANT ("TEST", b); - GNUNET_free (r); return 0; }