我想找出为什么strncpy被认为是不安全的.有没有人有关于此的任何文档或使用它的漏洞利用示例?
我试图找出一个结构真的'是'并遇到问题,所以我真的有两个问题:
1)'sara'中保存了什么?它是指向结构的第一个元素的指针吗?
2)更有趣的问题:为什么不编译?GCC说"test.c:10:错误:分配中的不兼容类型",我无法弄清楚为什么......(这部分已经通过你的答案解决了,太棒了!)
#include <stdio.h>
struct name {
char first[20];
char last[20];
};
int main() {
struct name sara;
sara.first = "Sara";
sara.last = "Black";
printf("struct direct: %x\n",sara);
printf("struct deref: %x\t%s\n", *sara, *sara);
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
以下代码片段在执行strncpy函数时以异常结束:
#define MAX_FILENAME_LEN 127
typedef struct {
unsigned long nameLength;
char name[MAX_FILENAME_LEN + 1];
} filestructure;
char *fileName;
strncpy( fileName, filestructure->name, MAX_FILENAME_LEN );
*( fileName + MAX_FILENAME_LEN+1 ) = 0;
Run Code Online (Sandbox Code Playgroud)
Ayone知道什么可能出错?在文件结构中,我有一个50个字符长的文件名,所以它在界限内...我真的有点迷失了可能导致这个简单代码的问题...