c语言整数检验,C程序整数缺陷的检测与修复
摘要:
整数缺陷是一类与整数的有限表示相关的程序缺陷,对软件系统的可靠性和安全性均有重要影响.人工审查难以发现涉及复杂程序逻辑的,由边界输入触发的缺陷.此外,由于C的整数语义的复杂性,整数缺陷的修复是极易出错的.为了实现准确且高效的自动化整数缺陷检测与修复,本文从逻辑推理,静态分析和修复实施3个自底向上的层次开展了研究,主要内容包括:1.提出了面向多核CPU的理论域上可满足性判定的并行化框架LDC,并给出了LDC的可靠性和完备性证明.本文将该框架应用于无量词等值理论域,证明了终止性,并实现了并行SMT求解器PZ3.在SMT-LIB测试集以及随机问题上的实验结果表明PZ3能够成功加速多种不同类型问题的求解,并且其并行加速的效果胜过了最先进的基于配置组合方法的并行求解器.2.为了高效地对程序的局部性质进行精确分析,提出了基于分而治之思想的组合静态分析框架C~2PA并证明了其可靠性.本文面向C~2PA设计了一种新的C程序整数数值语义分析算法,并实现了静态分析工具Tsmart-BD.实验结果表明,Tsmart-BD在标准测试集上漏报率为0.0%,误报率为12.7%,领先于知名开源静态分析工具和软件验证工具.此外Tsmart-BD能够在7.5分钟内完整分析规模超过320kLOC的开源软件Vim.3.提出了两种整数缺陷自动修复方法:(1)对C程序的整数操作进行精度提升,以消除编译得到的可执行程序中的整数缺陷,(2)面向缺陷的基于典型修复模式的修复生成.两种方法分别实现为工具CIntFix和IntPTI,且均能正确修复测试集上的所有目标缺陷.在开源项目上,CIntFix以1.18kLOC/s的速率完成对556.416kLOC代码的变形;IntPTI能够避免对96.3%的关键程序位置的更改,且修复引入的额外时间开销仅为0.5%.本文的研究成果均已集成到软件可信保障工具集Tsmart,并在实际的列车控制系统嵌入式软件的开发流程中进行了工程化应用实践,成功发现并修复了67个新的整数缺陷.
展开
c语言整数检验,C程序整数缺陷的检测与修复相关推荐
- 遇到代码缺陷不要慌,马上教你快速检测和修复
摘要:人类思维中总存在缺陷,写出的代码一样会存在缺陷,导致软件系统出现不符合预期的行为.本文讨论了软件缺陷的定义.分类.检测和修复. 人类思维中总存在缺陷,写出的代码一样会存在缺陷,导致软件系统出现不 ...
- C语言在main中输入2个整数ab,请教一个C语言问题。若输入3个整数3,2,1,则以下程序输出的结果是.,c 语言问题 输入三个整数 按从小到大输出...
导航:网站首页 > 请教一个C语言问题.若输入3个整数3,2,1,则以下程序输出的结果是.,c 语言问题 输入三个整数 按从小到大输出 请教一个C语言问题.若输入3个整数3,2,1,则以下程序输 ...
- python输入一个正整数、计算其各个位的数字之和_C语言程序设计:编写程序,输入一个正整数,统计该整数的位数并计算其各个数位上的数字之和。...
点击查看C语言程序设计:编写程序,输入一个正整数,统计该整数的位数并计算其各个数位上的数字之和.具体信息 答:#include /*包含头文件*/void main() /*主函数*/{ int n, ...
- 利用C语言,编写一程序:从键盘输入10个整数,统计其中正数、负数和零的个数,并在屏幕上输出
利用C语言,编写一程序:从键盘输入多个整数,统计其中正数.负数和零的个数,并在屏幕上输出 //从键盘输入10个整数,统计其中正数.负数和零的个数,并在屏幕上输出 #include <stdio. ...
- C语言无符号双字节乘法,华为OJ机试标题:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...
华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘) 题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出 ...
- 在python语言中下列是二进制整数_Python从菜鸟到高手(5):数字
Python从菜鸟到高手(5):数字 发布时间:2020-07-12 02:17:50 来源:51CTO 阅读:1005 作者:androidguy 1 基础知识 Python语言与其他编程语言一样, ...
- 大数计算器概念c语言,用C语言求两个超大整数的和
用C语言求两个超大整数的和 在生活中,我们经常需要计算非常大的数,但是任何一种计算器都有计算范围,一旦超过计算范围就会有精度的损失.或许有同学认为我们可以通过程序来解决,比如对于C语言来说,我们定义一 ...
- c语言给定一个非空整数数组_C程序检查给定整数的所有位是否为一(1)
c语言给定一个非空整数数组 Problem statement: Write a C Program to check if all the bits of a given integer is on ...
- C语言实现计算数的整数次幂
C语言实现计算数的整数次幂 程序分析: 1.while循环.输入1.22,5,scanf()成功读取两值,并返回2,循环继续. 因为scanf()跳过空白,所以可以像输出示例那样,分多行输入. 但是输 ...
最新文章
- Vue2.0使用vue-cli脚手架搭建
- android mvvm livedata_再谈Android应用架构——Jetpack VS 生命周期
- CoordinatorLayout中AppBarLayout的折叠仅依靠滑动RecyclerView实现
- c语言对称矩阵的压缩存储_【数据结构】对称矩阵及对称矩阵的压缩存储
- 同样的sql在两个oracle,sql – 从两个会话INSERT到唯一列相同的值(Oracle)
- 如何成为数据科学家_成为数据科学家需要了解什么
- selenium框架安装及webdriver安装
- 深层神经网络——线性模型的局限性
- ubuntu下lvs负载均衡dr模型shell脚本
- 10000元重金奖励:谁能开发这样的编辑软件程序,编辑软件功能说明
- geotrellis使用(七)记录一次惨痛的bug调试经历以及求DEM坡度实践
- JavaScript浅析1——类型
- Last-Modified和Etag
- ABAP推送企业微信机器人1-文本类型
- 可禁用计算机服务,Windows 10系统下哪些服务可以关闭?
- Java:用户输入矩形的长和宽,使用带返回值的方法求该矩形的面积并输出
- 用python做图片搜索引擎并保存到本地
- Java连载91-Map常用方法、Hashtable、SortedMap
- AUTOCAD2017
- 怎么看谷歌seo运营效果
热门文章
- linux拷贝大量文件时有什么方法可以效验文件有没有损坏,使用linux的cp命令复制文件后验证文件是否一致的方法...
- 面试智力题:天平称球
- 服务器告警其一:硬盘raid问题
- 十、Hadoop学习笔记————Hive与Hbase以及RDBMS(关系型数据库)的关系
- Android学习之图片压缩,压缩程度高且失真度小
- 【php学习笔记】ticks篇
- java springMVC SSM 操作日志 4级别联动 文件管理 头像编辑 shiro redis
- 关于document.referrer的使用需要注意
- hdu 4666 Hyperspace
- [转]Mogre 环境配置问题(Exception from HRESULT: 0x800736B1)