☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

非动态分配的数组不应过大

2.21 ID_unsuitableArraySize
目录 › next › previous

对于不具备动态存储期的数组,如果分配失败,难以做出相应处理。

应重点关注大型数组,评估其在运行时的最大资源占用是否符合执行环境的要求。

示例:

void foo() {
    int arr[1024][1024][1024];   // Non-compliant, too large
    ....
}

如果条件允许应改用动态内存分配,对分配失败的情况作出处理:

void foo() {
    int* arr = (int*)malloc(1024 * 1024 * 1024 * sizeof(int));   // Compliant
    if (arr) {
        ....     // Normal procedure
    } else {
        ....     // Handle allocation failures
    }
}

配置

maxStaticArraySize: 静态数组空间之和的上限,超过则报出 maxLocalArraySize: 函数内局部数组空间之和的上限,超过则报出 maxLocalThreadArraySize: 具有线程存储期的数组空间之和的上限,超过则报出

参考

CWE-770 SEI CERT MEM05-C
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.