コードスニペットを見てください
char ipAddr[] = {192, 168, 88, 2};
struct iphdr *ip_hdr = (struct iphdr*)(some_valid_eth_hdr_pointer + 1);
if (0 == memcmp((void*)(ip_hdr->saddr), (void*)ipAddr, 4)) /*memcmp cause my whole system crashed*/
{
printk("ip source addr matched\n");
}
コードはLinux の netfilter フック関数から抽出されます。つまり、ip_hdr->saddrがカーネル空間メモリに属している可能性があり、ip_hdr が有効なメモリを指していると確信しています。まだ何が問題なのかわからないので、助けてください。
前もって感謝します !