summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/libc/stdlib/malloc.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/lib/libc/stdlib/malloc.c b/src/lib/libc/stdlib/malloc.c
index 0af2e2fdea..37404a199e 100644
--- a/src/lib/libc/stdlib/malloc.c
+++ b/src/lib/libc/stdlib/malloc.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: malloc.c,v 1.105 2008/11/02 08:50:41 otto Exp $ */ 1/* $OpenBSD: malloc.c,v 1.106 2008/11/06 12:32:45 otto Exp $ */
2/* 2/*
3 * Copyright (c) 2008 Otto Moerbeek <otto@drijf.net> 3 * Copyright (c) 2008 Otto Moerbeek <otto@drijf.net>
4 * 4 *
@@ -477,6 +477,8 @@ map(struct dir_info *d, size_t sz, int zero_fill)
477 d->free_regions_size -= psz; 477 d->free_regions_size -= psz;
478 if (zero_fill) 478 if (zero_fill)
479 memset(p, 0, sz); 479 memset(p, 0, sz);
480 else if (malloc_junk && malloc_freeprot)
481 memset(p, SOME_FREEJUNK, sz);
480 return p; 482 return p;
481 } else if (r->size > psz) 483 } else if (r->size > psz)
482 big = r; 484 big = r;
@@ -1199,7 +1201,7 @@ ofree(void *p)
1199 } 1201 }
1200 malloc_guarded -= malloc_guard; 1202 malloc_guarded -= malloc_guard;
1201 } 1203 }
1202 if (malloc_junk) 1204 if (malloc_junk && !malloc_freeprot)
1203 memset(p, SOME_FREEJUNK, PAGEROUND(sz) - malloc_guard); 1205 memset(p, SOME_FREEJUNK, PAGEROUND(sz) - malloc_guard);
1204 unmap(&g_pool, p, PAGEROUND(sz)); 1206 unmap(&g_pool, p, PAGEROUND(sz));
1205 delete(&g_pool, r); 1207 delete(&g_pool, r);
@@ -1209,10 +1211,12 @@ ofree(void *p)
1209 1211
1210 if (malloc_junk && sz > 0) 1212 if (malloc_junk && sz > 0)
1211 memset(p, SOME_FREEJUNK, sz); 1213 memset(p, SOME_FREEJUNK, sz);
1212 i = getrbyte() & (MALLOC_DELAYED_CHUNKS - 1); 1214 if (!malloc_freeprot) {
1213 tmp = p; 1215 i = getrbyte() & (MALLOC_DELAYED_CHUNKS - 1);
1214 p = g_pool.delayed_chunks[i]; 1216 tmp = p;
1215 g_pool.delayed_chunks[i] = tmp; 1217 p = g_pool.delayed_chunks[i];
1218 g_pool.delayed_chunks[i] = tmp;
1219 }
1216 if (p != NULL) { 1220 if (p != NULL) {
1217 r = find(&g_pool, p); 1221 r = find(&g_pool, p);
1218 if (r == NULL) { 1222 if (r == NULL) {