68user's page 掲示板

Prev< No. 4379> Next  [最新発言に戻る] [過去ログ一覧]
No. 4379 # 68user 2005/11/10 (木) 20:19:47
>>4374 DNS勉強中
ありがとうございます。

以前も length では、というご指摘をいただいたのですが、RFC などの
一次資料を見つけられずにいます。
    http://x68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?log=4283
    http://x68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?log=4293

この件に関する一次資料をご存知でしょうか?

>>4375 DNS勉強中
> 分からないのは【DNS query 送信時にごみデータが後ろに大量に付く】事です。

> sendto(s, (const char *)&DNS_Send, sizeof(DNS_Send), 0, (struct sockaddr *)&server, sizeof(server)) < 0) {
sizeof(DNS_Send) バイトを送信しているのがまずいので、必要なバイト数分だけ
送信すればよいと思います。この例なら送信バイト数は

    (DNS_Send.QUERIES - &DNS_Send.id + count + 4) バイト

ですかね? (自信なし) まぁこれだと汚いので、質問数や長さを保持する変数を
追加した方がよいと思います。

あとは struct DNS_Packet のパディングが心配です (実際は id や flag は
short なのでほとんどの環境では問題ないと思いますが)。わたしなら
    struct DNS_Query {
        ....
    };
    struct DNS_Question {
        short id
        short flag;
        short QDCOUNT;
        short ANCOUNT;
        short NSCOUNT;
        short ARCOUNT;
      struct DNS_Query *q;
    };
    struct DNS_Packet {
        char data[1000];
        int length;
    };
として (命名は適当)、問い合わせ内容を DNS_Question に構築し、送信時に
DNS_Packet にコピーして send すると思います。といっても、わたしのソースの方
では全く実践できていないですけれども。

ところで、全体的にはかなり読みやすいと思うんですが、このソースのライセンスを
教えてください。要は、これを修正したものを、わたしのページに C のサンプル
コードとして記載することは可能でしょうか? ということです。


>>4378 Yuusuke
一般ユーザで展開したときに他ユーザの所有者でファイルを作成できてしまうと、
適当な tar ファイルをでっちあげれば他のユーザのファイルを自由に作成できる
ことになってしまうので、普通の UNIX ではできません。

root で展開するのもひとつの方法ですが、Solaris では /etc/system で
    rstchown=0
と設定することで一般ユーザが chown できるようになります (セキュリティを
犠牲にするので、わたしはしません)。そうしておけば、一般ユーザが tar xfp
すると、他ユーザが所有するファイルを作成できるかもしれません (試してません)。

Prev< No. 4379> Next  [最新発言に戻る] [過去ログ一覧]