1 /* $OpenBSD: malloc_ulimit2.c,v 1.5 2019/06/12 11:31:36 bluhm Exp $ */ 2 3 /* Public Domain, 2006, Otto Moerbeek <otto@drijf.net> */ 4 5 #include <sys/types.h> 6 #include <sys/time.h> 7 #include <sys/resource.h> 8 #include <err.h> 9 #include <stdlib.h> 10 #include <stdio.h> 11 12 #define FACTOR 1024 13 14 /* This test takes forever with junking turned on. */ 15 char *malloc_options = "jj"; 16 17 int 18 main() 19 { 20 struct rlimit lim; 21 size_t sz; 22 int i; 23 void *p; 24 25 if (getrlimit(RLIMIT_DATA, &lim) == -1) 26 err(1, "getrlimit"); 27 28 sz = lim.rlim_cur / FACTOR; 29 30 for (i = 0; ; i++) { 31 size_t len = (sz-i) * FACTOR; 32 p = malloc(len); 33 if (p != NULL) { 34 free(p); 35 break; 36 } 37 } 38 i += 10; 39 for (; i >= 0; i--) { 40 size_t len = (sz-i) * FACTOR; 41 p = malloc(len); 42 free(p); 43 free(malloc(4096)); 44 } 45 return (0); 46 } 47