我试图弄清楚这是否会以某种方式溢出:
void print_address(char *p)
{
arp_ hw;
int i;
hw.length = (size) *(p + _OFFSET1); //189 + 4 = 193
memcpy(hw.addr, packet + _OFFSET2, hw.length);
return;
}
其中 packet 是从 .txt 文件读取的输入?
最佳答案
是的,可以溢出;如果数据包中偏移量 4 处的值大于 128,则会溢出 hwaddr
中的 addr
字段。
关于c - memcpy 溢出边界利用? (破坏堆栈),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5236124/