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

专注代码检测 - 阅镜

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

函数每个分支都应有返回值

[复制链接]

70

主题

70

帖子

232

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
232
发表于 2021-9-10 19:48:24 | 显示全部楼层 |阅读模式
函数的每个分支都应该有返回值,否则如果函数走到无返回值的分支,其结果是未知的。

  1. // Bad
  2. int Foo(int bar) {
  3.   if (bar > 100) {
  4.     return 10;
  5.   } else if (bar > 10) {
  6.     return 1;
  7.   }
  8. }
复制代码

上述例子当bar<10时,其结果是未知的值。

  1. // Good
  2. int Foo(int bar) {
  3.   if (bar > 100) {
  4.     return 10;
  5.   } else if (bar > 10) {
  6.     return 1;
  7.   }
  8.   return 0;
  9. }
复制代码

开启适当级别的警告(GCC 中为  -Wreturn-type  并已包含在  -Wall  中)并设置为错误,可以在编译阶段发现这类错误。

关联漏洞:
  1.   中风险-逻辑问题

  2.   中风险-信息泄漏
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2022-1-17 09:34 , Processed in 0.084729 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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