[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Lost] [Patch] tcpip: DNS
Am Freitag, 21. Dezember 2007 00.33:33 schrieb Kevin Wolf:
> Nach den vielen Rückmeldungen hier die von meiner Seite aus endgültige
> Version.
> +/**
> + * Loest einen Domainnamen in eine IP-Adresse auf.
> + *
> + * @param domain Der auszul�sender Domainname als nullterminierter String,
War wohl schon etwas spät... ;-)
> + size_t domain_len = strlen(domain);
> + char data[2 + sizeof(struct dns_header) + domain_len + 6];
Hier wäre es noch schön zu wissen, was das +6 da überall soll... ;-)
> + for (i = domain_len; i; i--) {
> + if (domain[i - 1] != '.') {
> + qname[i] = domain[i - 1];
> + label_len++;
> + } else {
> + qname[i] = label_len;
> + label_len = 0;
> + }
> + }
Was passiert denn wenn ich jetzt ganz fies bin, und Lables habe die länger als
63 Zeichen oder sogar länger als 255 Zeichen sind?
> + // QTYPE = A und QCLASS = IN
> + *((word*) &data[2 + sizeof(struct dns_header) + domain_len + 2]) =
> + big_endian_word(1);
> + *((word*) &data[2 + sizeof(struct dns_header) + domain_len + 4]) =
> + big_endian_word(1);
Makros für A und IN wären da wohl nicht schlecht. Kommt ja auch weiter unten
nochmal vor.
> + // Senden
> + struct tcp_out_buffer out_buffer = {
> + .size = 2 + sizeof(struct dns_header) + domain_len + 6,
> + .data = data
> + };
Vielleicht packst du diese Grösse am besten in eine Variable? Dann musst du
nicht überall erklären, wie sie sich zusammensetzt. ;-)
Das ist was mir gerade so aufgefallen ist. Beim Rest fällt mir zumindest
nichts auf, das offensichtlich falsch ist.