数组参数大小不匹配¶
ID: cpp/array-arg-size-mismatch
Kind: problem
Security severity:
Severity: warning
Precision: high
Tags:
- reliability
Query suites:
- cpp-security-and-quality.qls
此规则查找函数调用,其中传递的数组大小小于函数声明的数组参数大小。这很可能导致对传递数组边界之外的内存进行访问。
传递的数组大小很可能是错误的,因为它与函数参数的大小不匹配。
建议¶
检查传递给函数的数组是否正确,或者修改其大小以匹配函数的数组参数大小。
示例¶
//Function foo's array parameter has a specified size
void foo(int a[10]) {
int i = 0;
for (i = 0; i <10; i++) {
a[i] = i * 2;
}
}
...
int my_arr[5];
foo(my_arr); //my_arr is smaller than foo's array parameter, and will cause access to memory outside its bounds