一段漏洞百出的代码
来源:互联网 发布:sql语句获取当前时间 编辑:程序博客网 时间:2024/04/28 02:12
下面是一段漏洞百出的代码:
#include <string.h>
#include <stdio.h>
class Base
...{
private:
char * name;
public:
Base(char * className)
...{
name = new char[strlen(className)];
strcpy(name, className);
}
~Base()
...{
delete name;
}
char * copyName()
...{
char newname [256];
strcpy(newname, name);
return newname;
}
virtual char * getName()
...{
return name;
}
static void print(Base base)
...{
printf("name: %s /n" , base.name);
}
};
class Subclass : public Base
...{
public:
Subclass(char * className) : Base(className)
...{
}
};
int main()
...{
Base * pBase = new Subclass("test");
Base::print(*pBase);
printf("name: %s /n", pBase->getName());
printf("new name: %s/n ", pBase->copyName());
return 0;
}
#include <stdio.h>
class Base
...{
private:
char * name;
public:
Base(char * className)
...{
name = new char[strlen(className)];
strcpy(name, className);
}
~Base()
...{
delete name;
}
char * copyName()
...{
char newname [256];
strcpy(newname, name);
return newname;
}
virtual char * getName()
...{
return name;
}
static void print(Base base)
...{
printf("name: %s /n" , base.name);
}
};
class Subclass : public Base
...{
public:
Subclass(char * className) : Base(className)
...{
}
};
int main()
...{
Base * pBase = new Subclass("test");
Base::print(*pBase);
printf("name: %s /n", pBase->getName());
printf("new name: %s/n ", pBase->copyName());
return 0;
}
这是经过修改的:
#include <string.h>
#include <stdio.h>
#include <stdio.h>
class Base
{
private:
char * name;
public:
Base(char * className = NULL)
{
name = new char[strlen(className)+1];
strcpy(name, className);
name[strlen(className)] = '/0';
}
{
private:
char * name;
public:
Base(char * className = NULL)
{
name = new char[strlen(className)+1];
strcpy(name, className);
name[strlen(className)] = '/0';
}
Base(Base& base)
{
if ( base.name )
{
name = new char[strlen(base.name)+1];
strcpy(name, base.name);
name[strlen(base.name)] = '/0';
}
else
name = '/0';
}
{
if ( base.name )
{
name = new char[strlen(base.name)+1];
strcpy(name, base.name);
name[strlen(base.name)] = '/0';
}
else
name = '/0';
}
~Base()
{
if ( name )
delete []name;
}
{
if ( name )
delete []name;
}
char * copyName()
{
char* newname = new char[strlen(name)+1];
strcpy(newname, name);
newname[strlen(name)] = '/0';
return newname;
}
{
char* newname = new char[strlen(name)+1];
strcpy(newname, name);
newname[strlen(name)] = '/0';
return newname;
}
virtual char * getName()
{
return name;
}
{
return name;
}
static void print(Base base)
{
printf("name: %s/n" , base.name);
}
};
{
printf("name: %s/n" , base.name);
}
};
class Subclass : public Base
{
public:
Subclass(char * className) : Base(className)
{
}
};
{
public:
Subclass(char * className) : Base(className)
{
}
};
int main()
{
Base * pBase = new Subclass("test");
{
Base * pBase = new Subclass("test");
Base::print(*pBase);
printf("name: %s/n", pBase->getName());
printf("name: %s/n", pBase->getName());
char * tempName = pBase->copyName();
printf("new name: %s/n", tempName);
delete []tempName;
printf("new name: %s/n", tempName);
delete []tempName;
delete pBase;
return 0;
}
}
- 一段漏洞百出的代码
- 由一份漏洞百出的代码所引出来的:
- cmd版漏洞百出的计算器
- 一段不可思议的代码
- 一段写晕掉的代码
- 一段好玩的代码
- 一段有趣的代码
- 一段弃暗投明的代码
- treeview的一段代码
- 一段分页的代码
- 一段简单的代码
- 一段smc的代码
- 一段好的代码
- CRM_ORDER_READ 的一段代码
- 一段ITEMCHANGED的代码
- 一段代码的差别
- 一段奇怪的代码
- 一段好玩的代码
- FPGA设计中关键问题的研究
- ucos-II在44b0上的移植(解决不断重启问题)
- oracle 常用功能函数汇总********************
- 考研的准备
- 2008脚本大赛PowerShell高级组Event 8解题及分析
- 一段漏洞百出的代码
- 一篇很好的文章,学verilog的可以好好看看!(转载
- ] FPGA设计需注意的方方面面
- 考研
- BTree,B-Tree,B+Tree,B*Tree都是什么
- 学习HDL的几点重要提示
- linux命令之df
- 计算网络标识,网络号
- 我的移動代碼倉庫