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

专注代码检测 - 阅镜

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

防止数字类型的错误强转

[复制链接]

70

主题

70

帖子

232

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
232
发表于 2021-9-10 20:41:23 | 显示全部楼层 |阅读模式
在有符号和无符号数字参与的运算中,需要注意类型强转可能导致的逻辑错误,建议指定参与计算时数字的类型或者统一类型参与计算。

错误例子
  1. int Foo() {
  2.   int len = 1;
  3.   unsigned int size = 9;
  4.   // 1 < 9 - 10 ? 由于运算中无符号和有符号混用,导致计算结果以无符号计算
  5.   if (len < size - 10) {
  6.     printf("Bad\n");
  7.   } else {
  8.     printf("Good\n");
  9.   }
  10. }
复制代码


正确例子
  1. void Foo() {
  2.   // 统一两者计算类型为有符号
  3.   int len = 1;
  4.   int size = 9;
  5.   if (len < size - 10) {
  6.     printf("Bad\n");
  7.   } else {
  8.     printf("Good\n");
  9.   }
  10. }
复制代码


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2022-1-17 08:52 , Processed in 0.046055 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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