X-Git-Url: http://andersk.mit.edu/gitweb/openssh.git/blobdiff_plain/454911007d1828916abd4337dcb3885aa3f260cb..d60970230cf34217f9cb75f58790dd1a73703ba1:/monitor_mm.c diff --git a/monitor_mm.c b/monitor_mm.c index c0e14134..b4a6e40c 100644 --- a/monitor_mm.c +++ b/monitor_mm.c @@ -24,13 +24,13 @@ */ #include "includes.h" -RCSID("$OpenBSD: monitor_mm.c,v 1.7 2002/06/28 01:49:31 millert Exp $"); +RCSID("$OpenBSD: monitor_mm.c,v 1.8 2002/08/02 14:43:15 millert Exp $"); #ifdef HAVE_SYS_MMAN_H #include -void *xmmap(size_t); #endif +#include "openbsd-compat/xmmap.h" #include "ssh.h" #include "xmalloc.h" #include "log.h" @@ -167,8 +167,10 @@ mm_malloc(struct mm_master *mm, size_t size) if (size == 0) fatal("mm_malloc: try to allocate 0 space"); + if (size > SIZE_T_MAX - MM_MINSIZE + 1) + fatal("mm_malloc: size too big"); - size = ((size + MM_MINSIZE - 1) / MM_MINSIZE) * MM_MINSIZE; + size = ((size + (MM_MINSIZE - 1)) / MM_MINSIZE) * MM_MINSIZE; RB_FOREACH(mms, mmtree, &mm->rb_free) { if (mms->size >= size)