summaryrefslogtreecommitdiffstats
path: root/crypto/openssh/monitor_mm.c
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/openssh/monitor_mm.c')
-rw-r--r--crypto/openssh/monitor_mm.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/crypto/openssh/monitor_mm.c b/crypto/openssh/monitor_mm.c
index c6ea208..0076c42 100644
--- a/crypto/openssh/monitor_mm.c
+++ b/crypto/openssh/monitor_mm.c
@@ -26,7 +26,9 @@
#include "includes.h"
RCSID("$OpenBSD: monitor_mm.c,v 1.6 2002/06/04 23:05:49 markus Exp $");
+#ifdef HAVE_SYS_MMAN_H
#include <sys/mman.h>
+#endif
#include "ssh.h"
#include "xmalloc.h"
@@ -82,10 +84,15 @@ mm_create(struct mm_master *mmalloc, size_t size)
*/
mm->mmalloc = mmalloc;
+#if defined(HAVE_MMAP) && defined(MAP_ANON)
address = mmap(NULL, size, PROT_WRITE|PROT_READ, MAP_ANON|MAP_SHARED,
-1, 0);
if (address == MAP_FAILED)
fatal("mmap(%lu): %s", (u_long)size, strerror(errno));
+#else
+ fatal("%s: UsePrivilegeSeparation=yes not supported",
+ __func__);
+#endif
mm->address = address;
mm->size = size;
@@ -123,9 +130,14 @@ mm_destroy(struct mm_master *mm)
mm_freelist(mm->mmalloc, &mm->rb_free);
mm_freelist(mm->mmalloc, &mm->rb_allocated);
+#ifdef HAVE_MMAP
if (munmap(mm->address, mm->size) == -1)
fatal("munmap(%p, %lu): %s", mm->address, (u_long)mm->size,
strerror(errno));
+#else
+ fatal("%s: UsePrivilegeSeparation=yes not supported",
+ __func__);
+#endif
if (mm->mmalloc == NULL)
xfree(mm);
else
OpenPOWER on IntegriCloud