请选择 进入手机版 | 继续访问电脑版

专注代码检测 - 阅镜

 找回密码
 立即注册
热搜: 安装 代码
查看: 74|回复: 0

比较数据大小时加上最小/最大值的校验

[复制链接]

70

主题

70

帖子

230

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
230
发表于 2021-9-10 20:42:22 | 显示全部楼层 |阅读模式
在进行数据大小比较时,要合理地校验数据的区间范围,建议根据数字类型,对其进行最大和最小值的判断,以防止非预期错误。

错误:
  1. void Foo(int index) {
  2.   int a[30] = {0};
  3.   // 此处index是int型,只考虑了index小于数组大小,但是并未判断是否大于等于0
  4.   if (index < 30) {
  5.     // 如果index为负数,则越界
  6.     a[index] = 1;
  7.   }
  8. }
复制代码


正确:
  1. void Foo(int index) {
  2.   int a[30] = {0};
  3.   // 判断index的最大最小值
  4.   if (index >= 0 && index < 30) {
  5.     a[index] = 1;
  6.   }
  7. }
复制代码


关联漏洞:
  1.   高风险-内存破坏
复制代码
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

QQ|Archiver|手机版|小黑屋| 阅镜 ( 京ICP备2020034574号 )|网站地图|网站地图点击这里给我发消息

GMT+8, 2021-10-27 02:31 , Processed in 0.052590 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表