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

专注代码检测 - 阅镜

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

校验内存相关函数的返回值

[复制链接]

70

主题

70

帖子

232

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
232
发表于 2021-9-10 19:51:55 | 显示全部楼层 |阅读模式
与内存分配相关的函数需要检查其返回值是否正确,以防导致程序崩溃或逻辑错误。

  1. // Bad
  2. void Foo() {
  3.   char* bar = mmap(0, 0x800000, .....);
  4.   *(bar + 0x400000) = '\x88'; // Wrong
  5. }
复制代码

如上例mmap如果失败,bar的值将是0xffffffff (ffffffff),第二行将会往0x3ffffff写入字符,导致越界写。

  1. // Good
  2. void Foo() {
  3.   char* bar = mmap(0, 0x800000, .....);
  4.   if(bar == MAP_FAILED) {
  5.     return;
  6.   }
  7.   *(bar + 0x400000) = '\x88';
  8. }
复制代码


关联漏洞:
  1.   中风险-逻辑问题
  2.   高风险-越界操作
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2022-1-17 10:02 , Processed in 0.615051 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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