[发明专利]一种基于符号执行的数组越界检测方法在审
申请号: | 201610202057.9 | 申请日: | 2016-04-01 |
公开(公告)号: | CN105912459A | 公开(公告)日: | 2016-08-31 |
发明(设计)人: | 胡昌振;单纯;于泽群;薛静锋;赵小林 | 申请(专利权)人: | 北京理工大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京理工大学专利中心 11120 | 代理人: | 高燕燕 |
地址: | 100081 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明提供一种基于符号执行的数组越界检测方法,首先分析函数所有路径,输入:一个函数所有的逻辑路径,函数信息,控制流图,函数实参列表;输出:所有路径的约束系统;然后单个路径分析,输入:一条逻辑路径,函数信息,控制流图,函数实参列表。输出:该条路径的约束系统以及一些附加信息。约束系统:关于数组变量的所有范围约束;附加信息:函数信息,函数调用关系,路径信息。 | ||
搜索关键词: | 一种 基于 符号 执行 数组 越界 检测 方法 | ||
【主权项】:
一种基于符号执行的数组越界检测方法,其特征在于,包括以下步骤:步骤一、分析函数所有路径,遍历函数的逻辑路径列表,得到其中的第一个路径对象path,如果path为null,则直接返回约束系统及附加信息,并退出该函数;否则将路径对象、函数信息、控制流图、实参列表作为参数,执行单个路径分析,将path指向下一个逻辑路径对象,然后执行步骤二;步骤二、单个路径分析,如果函数实参列表的大小不为0,执行步骤三;否则,执行步骤四;步骤三、根据函数信息,把实参的约束,值传递给形参变量,并添加到约束列表和变量类型列表中;步骤四、遍历该路径,得到它的第一个结点node;如果node为null,则直接返回约束系统及附加信息,并退出该函数;否则,执行步骤五;步骤五、通过node的编号信息,在控制流图中查找到对应的控制流结点,对该控制流图结点的语句类型进行判断,如果语句类型为VARIABLE_DEF,则执行步骤六;如果语句类型为Assign_EXPR,则执行步骤七;如果语句类型为for,则执行步骤八;如果语句类型为Other_EXPR,则执行步骤九;步骤六、语句类型为VARIABLE_DEF:将该语句涉及的变量添加到变量类型列表,如果涉及的是数组或整型变量,生成区间表示,利用区间与上下界生成约束,并添加到约束列表中;步骤七、语句类型为Assign_EXPR:如果语句涉及的变量是整型或数组变量,则进行区间运算,生成约束,并添加到约束列表中;步骤八、语句类型为for:通过控制流图结点,得到for的条件表达式信息,解析该条件表达式,得到整形变量名称,初始值,根据相应的约束规则,生成该整型变量的约束,并以(变量名称,约束)的形式存储到变量类型列表中;步骤九、语句类型为Other_EXPR:该语句是函数调用。根据实参和参数类型列表,如果实参是数组或整型变量,则要把约束赋给相应的形参,并且把所有实参的值赋给形参,然后执行步骤一分析函数所有路径。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610202057.9/,转载请声明来源钻瓜专利网。