diff options
Diffstat (limited to 'crypto/openssh/monitor_mm.c')
-rw-r--r-- | crypto/openssh/monitor_mm.c | 12 |
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 |