技术标签: 漏洞扫描 break弱点 漏洞检查 缺少break 静态分析 省略break
ID: 484 类型:基础 |
状态:草稿 |
描述
程序省略了switch或类似构造中的break语句,导致执行与多个条件相关联的代码。当程序员只打算执行与一个条件相关联的代码时,这可能会导致问题。
扩展描述
这可能导致关键代码在不应该执行的情况下执行。
相关试图
与“研究层面”视图(CWE-1000)相关
与“开发层面”视图(CWE-699)相关
引入模式
阶段 |
说明 |
实现 |
应用平台
语言
C (出现的可能性不确定)
C++ (出现的可能性不确定)
Java (出现的可能性不确定)
C# (出现的可能性不确定)
PHP (出现的可能性不确定)
后果
范围 |
冲击 |
可能性 |
其它 |
技术冲击: 修改执行逻辑 这个弱点会导致执行意外的逻辑和其他意外的应用程序行为。 |
被利用的可能性:
一般
示例
例1
在这两个示例中,将根据传递给函数的月份打印消息:
(问题代码)
Example Language: Java
public void printMessage(int month){
switch (month) {
case 1: print("January");
case 2: print("February");
case 3: print("March");
case 4: print("April");
case 5: print("May");
case 6: print("June");
case 7: print("July");
case 8: print("August");
case 9: print("September");
case 10: print("October");
case 11: print("November");
case 12: print("December");
}
println(" is a great month");
}
(问题代码)
Example Language: C
void printMessage(int month){
switch (month) {
case 1: printf("January");
case 2: printf("February");
case 3: printf("March");
case 4: printf("April");
case 5: printff("May");
case 6: printf("June");
case 7: printf("July");
case 8: printf("August");
case 9: printf("September");
case 10: printf("October");
case 11: printf("November");
case 12: printf("December");
}
printf(" is a great month");
}
这两个示例都不在每个案例后使用break语句,这会导致意外的贯穿行为。例如,调用“printmessage(10)”将导致文本“OctoberNovermberDecember is a great month”被打印。
应对措施
阶段: 实现 省略break语句以使一个可能失败的语句通常与错误不可区分,因此应该避免。如果需要使用贯穿能力,请确保在switch语句中清楚地记录了这一点,并确保已经检查了所有逻辑可能性。 |
阶段: 实现 省略break语句的功能可以用if语句来澄清。这种方法更安全。 |
种属
关系 |
类型 |
ID |
名称 |
属于 |
884 |
||
属于 |
962 |
vi的三种模式:命令模式、插入模式、末行模式vi三种启动方式:vi 新文件:创建新文件 vi 已有文件:打开已存在的文件 vi:退出vi的时候w后面加新文件名保存文件,q退出vi的退出方式:要回到末行模式才能退出w:保存 w 文件名:另存为 wq:保存退出 q!:不保存退出 q:如果文件没修改q退出,修改不能退出用vi编辑一个文件,让该文件可执行案例:vi命令模式常用命令:1.从命令模式进入进入输入模式:i:在光标当前位置插入 a:在光标后面...
全栈工程师开发手册 (作者:栾鹏)Echarts数据可视化开发代码注释全解 Echarts数据可视化开发参数配置全解6大公共组件详解(点击进入): title详解、 tooltip详解、toolbox详解、legend详解、dataZoom详解、visualMap全解 5大坐标系详解(点击进入): 地理坐标系geo详解、grid直角坐标系(xAxis、yAxis)详解、parallel平行
我们提出了面向任务的对话系统的新型端到端可训练神经网络模型,该模型能够跟踪对话状态,基于知识(KB)的API调用,并将结构化的KB查询结果合并到系统响应中,从而成功完成面向任务的对话。通过在对话历史上的进行belief tracking和KB结果处理,进而模型产生结构良好的系统响应。我们使用从第二个Dialog State Tracking Challenge(DSTC2)语料库转换而来的数据集在饭店搜索域中评估模型。实验结果表明,在给定对话历史记录的情况下,该模型可以很好地跟踪对话状态。此外,我们的模型在
ContentProvider是一种内容共享型组件,实际上它是通过Binder向其它应用提供数据。当ContentProvider所在的进程启动时,ContentProvider会同时启动并被发布到AMS中,需要特别注意的是ContentProvider的onCreate方法要早于Application的onCreate方法执行。启动过程废话不多说先看源码,As we all known,每个进程的入口都是ActivityThread.main1.入口方法是ActivityThread的main方法,
gcc包含完整的出错检查和警告提示功能。采用-pedantic选项,对于不符合ANSI/ISO标准的源代码会产生相应的警告信息。如:gcc -pedantic hello.c -o hello (main函数返回类型为int,且函数体内要有return 语句,一般为 return 0;) -pedantic不能保证被编译的程序与ANSI/ISO C语言标准的完全兼容,只能帮助Linux程序员离这...
一准备工作在这里插入代码片yum install opensslyum install vim在opt目录下创建ssl目录用来临时存储生成的证书文件mkdir /opt/sslcd /opt/ssl/cp /etc/pki/tls/openssl.cnf ./rm -rf /etc/pki/CA/*.old生成证书索引库数据库文件touch /etc/pki/CA/index....
文章目录前言一、重定义fputc函数写法1(我目前使用的)写法2(网上常见的)写法3(网上常见的)一起交流一下鸭~二、勾选Use MicroLib三、main函数中应用printf输出四、注意事项(问题现象:程序卡在fputc函数)五、小结前言芯片型号:STM32F103VCT6串口:USART1目的:重定义fputc函数到串口输出,实现printf一、重定义fputc函数写法1(我目前使用的)int fputc(int ch, FILE *f){ /* 发送一个字
目录概述信息摘要总览介绍AT&T的支持与BSD的对抗竞争发布版SVR1SVR2SVR3SVR4SVR4.2 / UnixWareSVR5 / UnixWare 7SVR6 (取消)市场地位20世纪90年代在x86平台上的可用性蒙特利项目系统V和Unix市场占有情况OpenSolaris和illumos发行版系统V的兼容性概述Unix系统V(英文读作“System Five”,即“系统五”)是Unix操作系统.
02#include<iostream>using namespace std;int main(){ int first = 1, second = 2, temp = 0, sum = 2; while (temp < 4000000) { temp = first + second; if (temp % 2 == 0 &&temp < 4000000) { sum += temp; } first = second;
01:统计数字字符个数描述输入一行字符,统计出其中数字字符的个数。输入一行字符串,总长度不超过255。输出输出为1行,输出字符串里面数字字符的个数。样例输入Peking University is set up at 1898.样例输出4#include&lt;bits/stdc++.h&gt;using namespace std;in...
详见http://www.netmba.com/mgmt/ob/motivation/herzberg/Herzberg found that the factors causing job satisfaction (and presumably motivation) were different from those causing job dissatisfaction. He devel
区块链,一种由多方共同维护、分布式储存的记账技术,可通过信任机制的重构拓宽协作关系的纵深度,在推动产业变革、创建数字经济等方面有着关键作用。目前,在全球范围内,已有多个国家政府表明将积极发...