|
|
1.1 ! root 1: /* ! 2: * libc/gen/malloc/memok.c ! 3: * Test for corruption of malloc arena. ! 4: * Assumes contiguous allocation from __a_first to __a_top. ! 5: */ ! 6: ! 7: #include <stdio.h> ! 8: #include <sys/malloc.h> ! 9: ! 10: /* ! 11: * Return 1 if malloc arena is ok, ! 12: * 0 if it is corrupted. ! 13: */ ! 14: int ! 15: memok() ! 16: { ! 17: register MBLOCK *mp; ! 18: unsigned counter, flag, len; ! 19: ! 20: if (NULL == (mp = __a_first)) ! 21: return ((NULL == __a_scanp) && !__a_count); ! 22: flag = 0; ! 23: for (counter = __a_count; counter--; ) { ! 24: if (mp == __a_scanp) ! 25: flag++; ! 26: if ((mp >= __a_top) || (mp < __a_first)) ! 27: return 0; /* out of bounds */ ! 28: mp = (len = realsize(mp->blksize)) ? bumpp(mp, len) : mp->uval.next; ! 29: } ! 30: return ((1 == flag) && (mp == __a_first)); ! 31: } ! 32: ! 33: /* end of memok.c */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.