Index: lib/libc/db/btree/bt_split.c =================================================================== --- lib/libc/db/btree/bt_split.c +++ lib/libc/db/btree/bt_split.c @@ -372,7 +372,7 @@ } /* Put the new left page for the split into place. */ - if ((l = (PAGE *)malloc(t->bt_psize)) == NULL) { + if ((l = (PAGE *)calloc(1, t->bt_psize)) == NULL) { mpool_put(t->bt_mp, r, 0); return (NULL); } Index: lib/libc/db/hash/hash_buf.c =================================================================== --- lib/libc/db/hash/hash_buf.c +++ lib/libc/db/hash/hash_buf.c @@ -57,6 +57,7 @@ #include #include #include +#include #ifdef DEBUG #include @@ -169,12 +170,12 @@ */ if (hashp->nbufs || (bp->flags & BUF_PIN)) { /* Allocate a new one */ - if ((bp = (BUFHEAD *)malloc(sizeof(BUFHEAD))) == NULL) + if ((bp = (BUFHEAD *)calloc(1, sizeof(BUFHEAD))) == NULL) return (NULL); #ifdef PURIFY memset(bp, 0xff, sizeof(BUFHEAD)); #endif - if ((bp->page = (char *)malloc(hashp->BSIZE)) == NULL) { + if ((bp->page = (char *)calloc(1, hashp->BSIZE)) == NULL) { free(bp); return (NULL); } @@ -319,8 +314,10 @@ } /* Check if we are freeing stuff */ if (do_free) { - if (bp->page) + if (bp->page) { + (void)memset(bp->page, 0, hashp->BSIZE); free(bp->page); + } BUF_REMOVE(bp); free(bp); bp = LRU; Index: lib/libc/db/mpool/mpool.c =================================================================== --- lib/libc/db/mpool/mpool.c +++ lib/libc/db/mpool/mpool.c @@ -332,7 +332,7 @@ return (bp); } -new: if ((bp = (BKT *)malloc(sizeof(BKT) + mp->pagesize)) == NULL) +new: if ((bp = (BKT *)calloc(1, sizeof(BKT) + mp->pagesize)) == NULL) return (NULL); #ifdef STATISTICS ++mp->pagealloc;