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

专注代码检测 - 阅镜

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

防止整数溢出

[复制链接]

70

主题

70

帖子

232

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
232
发表于 2021-9-10 20:35:31 | 显示全部楼层 |阅读模式
在计算时需要考虑整数溢出的可能,尤其在进行内存操作时,需要对分配、拷贝等大小进行合法校验,防止整数溢出导致的漏洞。

错误(该例子在计算时产生整数溢出)

  1. const int kMicLen = 4;
  2. // 整数溢出
  3. void Foo() {
  4.   int len = 1;
  5.   char payload[10] = { 0 };
  6.   char dst[10] = { 0 };
  7.   // Bad, 由于len小于4,导致计算拷贝长度时,整数溢出
  8.   // len - kMicLen == 0xfffffffd
  9.   memcpy(dst, payload, len - kMicLen);
  10. }
复制代码

正确例子

  1. void Foo() {
  2.   int len = 1;
  3.   char payload[10] = { 0 };
  4.   char dst[10] = { 0 };
  5.   int size = len - kMicLen;
  6.   // 拷贝前对长度进行判断
  7.   if (size > 0 && size < 10) {
  8.     memcpy(dst, payload, size);
  9.     printf("memcpy good\n");
  10.   }
  11. }
复制代码


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2022-1-17 09:44 , Processed in 0.086898 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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