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. */ 15char *malloc_options = "jj"; 16 17int 18main() 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