应用软件安全编程--15禁止使用被污染的数据作为缓冲区

将被污染的数据直接作为参数传递给对缓冲区进行处理的库函数、API 可能会造成缓冲区溢出。

对于禁止使用被污染的数据作为缓冲区的情况,示例1给出了不规范用法(C/C++    语 言 ) 示 例 。 示 例 2 给 出 了 规 范 用 法(C/C++    语言)示例。

示例1:

#include

在如上示例中,函数 stprintf()通过字符串打印的方式,将 str 复 制 到 目 的 缓 冲 区 buffer 中 。 由 于  源字符串 str 是污点数据,其长度可能会超过目的缓冲区 buffer 的长度,该复制动作,可能会导致缓冲 区溢出 。

示例2:

#include  

void   f(char   *buffer,   char   *str){

stprintf(buffer,"%s",str);

 

如上示例中,str 没有被污染。但在调用该函数前,仍需要对其长度进行验证,以确保该长度值不会超过目的缓冲区的长度。

你可能感兴趣的:(应用软件安全编程,安全,c++)