summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorotto <>2020-10-06 06:31:14 +0000
committerotto <>2020-10-06 06:31:14 +0000
commit92a02cae2b0a4145e9eef1482fa95dc07b72f109 (patch)
treec25dd7cb36871ccc315ae8168b13e08646bb1065
parent3aed61703f68a54e3f14a52befd98a4b9b9a59b8 (diff)
downloadopenbsd-92a02cae2b0a4145e9eef1482fa95dc07b72f109.tar.gz
openbsd-92a02cae2b0a4145e9eef1482fa95dc07b72f109.tar.bz2
openbsd-92a02cae2b0a4145e9eef1482fa95dc07b72f109.zip
Use random value for canary bytes; ok tb@
-rw-r--r--src/lib/libc/stdlib/malloc.c24
1 files changed, 1 insertions, 23 deletions
diff --git a/src/lib/libc/stdlib/malloc.c b/src/lib/libc/stdlib/malloc.c
index 1755f896f0..e979428b23 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.263 2020/09/06 06:41:03 otto Exp $ */ 1/* $OpenBSD: malloc.c,v 1.264 2020/10/06 06:31:14 otto Exp $ */
2/* 2/*
3 * Copyright (c) 2008, 2010, 2011, 2016 Otto Moerbeek <otto@drijf.net> 3 * Copyright (c) 2008, 2010, 2011, 2016 Otto Moerbeek <otto@drijf.net>
4 * Copyright (c) 2012 Matthew Dempsky <matthew@openbsd.org> 4 * Copyright (c) 2012 Matthew Dempsky <matthew@openbsd.org>
@@ -728,26 +728,6 @@ unmap(struct dir_info *d, void *p, size_t sz, size_t clear, int junk)
728 wrterror(d, "malloc cache overflow"); 728 wrterror(d, "malloc cache overflow");
729} 729}
730 730
731static void
732zapcacheregion(struct dir_info *d, void *p, size_t len)
733{
734 u_int i;
735 struct region_info *r;
736 size_t rsz;
737
738 for (i = 0; i < d->malloc_cache; i++) {
739 r = &d->free_regions[i];
740 if (r->p >= p && r->p <= (void *)((char *)p + len)) {
741 rsz = r->size << MALLOC_PAGESHIFT;
742 if (munmap(r->p, rsz))
743 wrterror(d, "munmap %p", r->p);
744 r->p = NULL;
745 d->free_regions_size -= r->size;
746 STATS_SUB(d->malloc_used, rsz);
747 }
748 }
749}
750
751static void * 731static void *
752map(struct dir_info *d, size_t sz, int zero_fill) 732map(struct dir_info *d, size_t sz, int zero_fill)
753{ 733{
@@ -1587,14 +1567,12 @@ orealloc(struct dir_info **argpool, void *p, size_t newsz, void *f)
1587 size_t needed = rnewsz - roldsz; 1567 size_t needed = rnewsz - roldsz;
1588 1568
1589 STATS_INC(pool->cheap_realloc_tries); 1569 STATS_INC(pool->cheap_realloc_tries);
1590 //zapcacheregion(pool, hint, needed);
1591 q = MQUERY(hint, needed, pool->mmap_flag); 1570 q = MQUERY(hint, needed, pool->mmap_flag);
1592 if (q == hint) 1571 if (q == hint)
1593 q = MMAPA(hint, needed, pool->mmap_flag); 1572 q = MMAPA(hint, needed, pool->mmap_flag);
1594 else 1573 else
1595 q = MAP_FAILED; 1574 q = MAP_FAILED;
1596 if (q == hint) { 1575 if (q == hint) {
1597gotit:
1598 STATS_ADD(pool->malloc_used, needed); 1576 STATS_ADD(pool->malloc_used, needed);
1599 if (pool->malloc_junk == 2) 1577 if (pool->malloc_junk == 2)
1600 memset(q, SOME_JUNK, needed); 1578 memset(q, SOME_JUNK, needed);