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

被除数不应是作用于指针的 sizeof 表达式

10.7.4 ID_sizeof_pointerDivision
目录 › next › previous

形如 sizeof(p) / n 的表达式往往意在获取数组元素的个数,如果 p 是指针,sizeof(p) 是指针大小而不是数组大小,结果很可能是错误的。

示例:

void foo(T* p) {
    size_t n = sizeof(p[0]);
    qsort(p, sizeof(p) / n, n, cmp);  // Non-compliant, logic error
}

例中 sizeof(p) / n 并不能获取 p 所指数组中元素的个数。

本规则是 ID_sizeof_pointer 的特化,sizeof 作用于指针是可疑的,再作为被除数就更加可疑了。

相关

ID_sizeof_pointer

参考

CWE-467
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.