diff options
author | otto <> | 2020-10-06 06:31:14 +0000 |
---|---|---|
committer | otto <> | 2020-10-06 06:31:14 +0000 |
commit | 92a02cae2b0a4145e9eef1482fa95dc07b72f109 (patch) | |
tree | c25dd7cb36871ccc315ae8168b13e08646bb1065 | |
parent | 3aed61703f68a54e3f14a52befd98a4b9b9a59b8 (diff) | |
download | openbsd-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.c | 24 |
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 | ||
731 | static void | ||
732 | zapcacheregion(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 | |||
751 | static void * | 731 | static void * |
752 | map(struct dir_info *d, size_t sz, int zero_fill) | 732 | map(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) { |
1597 | gotit: | ||
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); |