@rg070836rg
2015-09-10T08:04:53.000000Z
字数 979
阅读 3100
软件分析与测试
能够满足PIE三个条件。
程序很简单,要求输入一个数字,得到屏幕显示“no error”程序错误点在数组越界,内存占用,导致程序析构时候失败。当输入在0~50 跳过不执行错误代码。当输入在51~200,这边定义char数组,越界但是不导致奔溃当输入在201~400 定义int数组,越界,析构时候奔溃。其他时候,直接输出no error
代码样例如下:
#include <iostream>using namespace std;#define N 10void test1(){char a[N];for (char i=0;i<N+1 ;i++){a[i]=97;}cout<<"no error!"<<endl;}void test2(){int a[N];for (int i=0;i<N+1 ;i++){a[i]=97;}cout<<"no error!"<<endl;}void test0(int flag){if (flag<50 && flag >0){int a[N];for (int i=0;i<N+1 ;i++){a[i]=97;}}cout<<"no error!"<<endl;}void main(){int flag;cin>>flag;if (flag>=0&&flag<=50){test0(100);//选择性执行}else if(flag>=51 && flag<=200){test1();//有错,执行,不崩溃。//第二种}else if(flag>=201 && flag<=400){test2();//有错,执行,崩溃。//第三种}elsecout<<"no error"<<endl;}
