重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

C言語でネットワークを流れるパケットの取得&解析を行っているのですが、実行時にセグメンテーション違反と出てしまい、困っています。デバッグオプションをつけてやってみたところ、プログラムが中断されたところは分かったのですが、どこが悪いのか分かりません。どなたかあやしいところがありましたらお教え下さい。
OSはLinuxでコンパイラはgccです。

void udp_scanport(struct ip *ip, struct udphdr *udp)
{
static struct in_addr *ipaddr[1024];
static int i = -1;
static int udp_count[1024];
struct in_addr *inwk;
static u_short udp_port[1024];
int u = 0;
int k = 0;
i++;
inwk = (struct in_addr *)malloc(sizeof(struct in_addr));
memcpy(inwk, &ip->ip_src, sizeof(struct in_addr));
ipaddr[i] = (struct in_addr *)inwk;
printf("送信元IPアドレス:%15s\n", inet_ntoa(*(struct in_addr *) ipaddr[i]));
udp_port[i] = udp->uh_dport; /*デバッグしたら中断したところ*/
printf("UDP送信先ポート番号:%15u\n", ntohs(udp_port[i]));
if (i == 100)
free(inwk);
}

A 回答 (1件)

struct udphdr *udp が正しく渡されていないのでは?

    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。やはりその可能性が高そうですね。もう1回みなおしてみます。

お礼日時:2006/01/26 17:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!