aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2009-11-12 15:45:15 +0000
committerChristian Grothoff <christian@grothoff.org>2009-11-12 15:45:15 +0000
commit4c776c7ec791ad75d9413f5ae098e9e200fd9d07 (patch)
treeebeadf76d0830c22915aa0f61621cb9b423c88ea /src
parentc74179c8058cc0d703463d77846a6e1326bf6df7 (diff)
downloadgnunet-4c776c7ec791ad75d9413f5ae098e9e200fd9d07.tar.gz
gnunet-4c776c7ec791ad75d9413f5ae098e9e200fd9d07.zip
check properly for mmap failures
Diffstat (limited to 'src')
-rw-r--r--src/util/disk.c13
-rw-r--r--src/util/test_strings.c2
2 files changed, 14 insertions, 1 deletions
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
1432}; 1432};
1433 1433
1434 1434
1435#ifndef MAP_FAILED
1436#define MAP_FAILED ((void *) -1)
1437#endif
1438
1435/** 1439/**
1436 * Map a file into memory 1440 * Map a file into memory
1437 * 1441 *
@@ -1498,6 +1502,7 @@ GNUNET_DISK_file_map (const struct GNUNET_DISK_FileHandle *h,
1498 return ret; 1502 return ret;
1499#else 1503#else
1500 int prot; 1504 int prot;
1505 int ec;
1501 1506
1502 prot = 0; 1507 prot = 0;
1503 if (access & GNUNET_DISK_MAP_TYPE_READ) 1508 if (access & GNUNET_DISK_MAP_TYPE_READ)
@@ -1506,6 +1511,14 @@ GNUNET_DISK_file_map (const struct GNUNET_DISK_FileHandle *h,
1506 prot |= PROT_WRITE; 1511 prot |= PROT_WRITE;
1507 *m = GNUNET_malloc (sizeof (struct GNUNET_DISK_MapHandle)); 1512 *m = GNUNET_malloc (sizeof (struct GNUNET_DISK_MapHandle));
1508 (*m)->addr = mmap (NULL, len, prot, MAP_SHARED, h->fd, 0); 1513 (*m)->addr = mmap (NULL, len, prot, MAP_SHARED, h->fd, 0);
1514 GNUNET_assert (NULL != (*m)->addr);
1515 if (MAP_FAILED == (*m)->addr)
1516 {
1517 ec = errno;
1518 GNUNET_free (*m);
1519 errno = ec;
1520 return NULL;
1521 }
1509 (*m)->len = len; 1522 (*m)->len = len;
1510 return (*m)->addr; 1523 return (*m)->addr;
1511#endif 1524#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 ()
90 GNUNET_free (r); 90 GNUNET_free (r);
91 return 1; 91 return 1;
92 } 92 }
93 GNUNET_free (r);
93 b = GNUNET_STRINGS_to_utf8 ("TEST", 4, "ASCII"); 94 b = GNUNET_STRINGS_to_utf8 ("TEST", 4, "ASCII");
94 WANT ("TEST", b); 95 WANT ("TEST", b);
95 b = GNUNET_STRINGS_to_utf8 ("TEST", 4, "unknown"); 96 b = GNUNET_STRINGS_to_utf8 ("TEST", 4, "unknown");
96 WANT ("TEST", b); 97 WANT ("TEST", b);
97 GNUNET_free (r);
98 return 0; 98 return 0;
99} 99}
100 100