@@ -909,6 +909,8 @@ void *umm_malloc(size_t size) {
909909
910910 ptr = umm_malloc_core (_context, size);
911911
912+ ptr = POISON_CHECK_SET_POISON (ptr, size);
913+
912914 UMM_CRITICAL_EXIT (id_malloc);
913915
914916 return ptr;
@@ -1068,7 +1070,7 @@ void *umm_realloc(void *ptr, size_t size) {
10681070 // Case 2 - block + next block fits EXACTLY
10691071 } else if ((blockSize + nextBlockSize) == blocks) {
10701072 DBGLOG_DEBUG (" exact realloc using next block - %i\n " , blocks);
1071- umm_assimilate_up (c);
1073+ umm_assimilate_up (_context, c);
10721074 STATS__FREE_BLOCKS_UPDATE (-nextBlockSize);
10731075 blockSize += nextBlockSize;
10741076
@@ -1087,8 +1089,9 @@ void *umm_realloc(void *ptr, size_t size) {
10871089 STATS__FREE_BLOCKS_UPDATE (-prevBlockSize);
10881090 STATS__FREE_BLOCKS_ISR_MIN ();
10891091 blockSize += prevBlockSize;
1092+ POISON_CHECK_SET_POISON ((void *)&UMM_DATA (c), size); // Fix allocation so ISR poison check is good
10901093 UMM_CRITICAL_SUSPEND (id_realloc);
1091- memmove ((void *)&UMM_DATA (c), ptr, curSize);
1094+ UMM_POISON_MEMMOVE ((void *)&UMM_DATA (c), ptr, curSize);
10921095 ptr = (void *)&UMM_DATA (c);
10931096 UMM_CRITICAL_RESUME (id_realloc);
10941097 // Case 5 - prev block + block + next block fits
@@ -1108,8 +1111,9 @@ void *umm_realloc(void *ptr, size_t size) {
11081111 #else
11091112 blockSize += (prevBlockSize + nextBlockSize);
11101113 #endif
1114+ POISON_CHECK_SET_POISON ((void *)&UMM_DATA (c), size);
11111115 UMM_CRITICAL_SUSPEND (id_realloc);
1112- memmove ((void *)&UMM_DATA (c), ptr, curSize);
1116+ UMM_POISON_MEMMOVE ((void *)&UMM_DATA (c), ptr, curSize);
11131117 ptr = (void *)&UMM_DATA (c);
11141118 UMM_CRITICAL_RESUME (id_realloc);
11151119
@@ -1119,8 +1123,9 @@ void *umm_realloc(void *ptr, size_t size) {
11191123 void *oldptr = ptr;
11201124 if ((ptr = umm_malloc_core (_context, size))) {
11211125 DBGLOG_DEBUG (" realloc %i to a bigger block %i, copy, and free the old\n " , blockSize, blocks);
1126+ POISON_CHECK_SET_POISON ((void *)&UMM_DATA (c), size);
11221127 UMM_CRITICAL_SUSPEND (id_realloc);
1123- memcpy (ptr, oldptr, curSize);
1128+ UMM_POISON_MEMCPY (ptr, oldptr, curSize);
11241129 UMM_CRITICAL_RESUME (id_realloc);
11251130 umm_free_core (_context, oldptr);
11261131 } else {
@@ -1181,8 +1186,9 @@ void *umm_realloc(void *ptr, size_t size) {
11811186 blockSize = blocks;
11821187 #endif
11831188 }
1189+ POISON_CHECK_SET_POISON ((void *)&UMM_DATA (c), size);
11841190 UMM_CRITICAL_SUSPEND (id_realloc);
1185- memmove ((void *)&UMM_DATA (c), ptr, curSize);
1191+ UMM_POISON_MEMMOVE ((void *)&UMM_DATA (c), ptr, curSize);
11861192 ptr = (void *)&UMM_DATA (c);
11871193 UMM_CRITICAL_RESUME (id_realloc);
11881194 } else if (blockSize >= blocks) { // 2
@@ -1198,8 +1204,9 @@ void *umm_realloc(void *ptr, size_t size) {
11981204 void *oldptr = ptr;
11991205 if ((ptr = umm_malloc_core (_context, size))) {
12001206 DBGLOG_DEBUG (" realloc %d to a bigger block %d, copy, and free the old\n " , blockSize, blocks);
1207+ POISON_CHECK_SET_POISON ((void *)&UMM_DATA (c), size);
12011208 UMM_CRITICAL_SUSPEND (id_realloc);
1202- memcpy (ptr, oldptr, curSize);
1209+ UMM_POISON_MEMCPY (ptr, oldptr, curSize);
12031210 UMM_CRITICAL_RESUME (id_realloc);
12041211 umm_free_core (_context, oldptr);
12051212 } else {
@@ -1223,8 +1230,9 @@ void *umm_realloc(void *ptr, size_t size) {
12231230 void *oldptr = ptr;
12241231 if ((ptr = umm_malloc_core (_context, size))) {
12251232 DBGLOG_DEBUG (" realloc %d to a bigger block %d, copy, and free the old\n " , blockSize, blocks);
1233+ POISON_CHECK_SET_POISON ((void *)&UMM_DATA (c), size);
12261234 UMM_CRITICAL_SUSPEND (id_realloc);
1227- memcpy (ptr, oldptr, curSize);
1235+ UMM_POISON_MEMCPY (ptr, oldptr, curSize);
12281236 UMM_CRITICAL_RESUME (id_realloc);
12291237 umm_free_core (_context, oldptr);
12301238 } else {
@@ -1250,6 +1258,8 @@ void *umm_realloc(void *ptr, size_t size) {
12501258
12511259 STATS__FREE_BLOCKS_MIN ();
12521260
1261+ ptr = POISON_CHECK_SET_POISON (ptr, size);
1262+
12531263 /* Release the critical section... */
12541264 UMM_CRITICAL_EXIT (id_realloc);
12551265
@@ -1258,6 +1268,7 @@ void *umm_realloc(void *ptr, size_t size) {
12581268
12591269/* ------------------------------------------------------------------------ */
12601270
1271+ #if !defined(UMM_POISON_CHECK) && !defined(UMM_POISON_CHECK_LITE)
12611272void *umm_calloc (size_t num, size_t item_size) {
12621273 void *ret;
12631274
@@ -1273,6 +1284,7 @@ void *umm_calloc(size_t num, size_t item_size) {
12731284
12741285 return ret;
12751286}
1287+ #endif
12761288
12771289/* ------------------------------------------------------------------------ */
12781290
0 commit comments