已合并
osMemoryPoolNew中 uint32_t 乘法溢出导致校验使用截断小值,触发内核堆越界写入。 #1151
yang-pangyuan创建于 6月23日
osMemoryPoolNew中 uint32_t 乘法溢出导致校验使用截断小值,触发内核堆越界写入。 #1151
已合并
yang-pangyuan创建于 6月23日
1 个文件变更+3-1
Mkal/cmsis/cmsis_liteos2.c+3-1
@@ -1444,7 +1444,9 @@ osMemoryPoolId_t osMemoryPoolNew(uint32_t block_count, uint32_t block_size, cons
1444 if ((block_count == 0) || (block_size == 0)) {1444 if ((block_count == 0) || (block_size == 0)) {
1445 return NULL;1445 return NULL;
1446 }1446 }
1447- 1447+ if (block_count > (UINT32_MAX / block_size)){
1448+ return NULL;
1449+ }
1448 size = block_count * block_size;1450 size = block_count * block_size;
1449 1451 
1450 if (attr != NULL) {1452 if (attr != NULL) {