Re: [dev] Suckless DNS server

From: Jeremy <jer_AT_jer.cx>
Date: Wed, 19 Jul 2023 10:20:40 -0700

On 07/19/23 04:20PM, Sergey Matveev wrote:
> >Which DNS server do you recommend to use?
>
> https://github.com/janmojzis/dq is pretty lightweight and simple.

I respect the endeavour but this author seems to dine pretty heavy on
thick paint chips. Before returning from strtoip4, he does the following:
int strtoip4(unsigned char *ip, const char *x)
    ...
    byte_copy(ip, 12, "\0\0\0\0\0\0\0\0\0\0\377\377");
    return 1;
}


And here is byte_copy:
void byte_copy(void *yv, long long ylen, const void *xv) {
    
    long long i;
    const char *x = xv;
    char *y = yv;

    for (i = 0; i < ylen; ++i) y[i] = x[i];
}

Of course, byte_copy is superior to memcpy & strncpy here because he's
copying some pretty long(!) strings.

Also, your binary IPv4 address buffer needs to be at 16-bytes long so
the author can populate the first 12-bytes with a mysterious string literal.

Another excerpt:
#define X(e,s) if (i == e) return s;

const char *e_str(int i)
{
  X(0,"no error");
  X(EINTR,"interrupted system call")
  X(ENOMEM,"out of memory")
  X(ENOENT,"file does not exist")
  X(ETXTBSY,"text busy")
  X(EIO,"input/output error")
  ...
  return "unknown error";
}


Maybe this is just comedy?
In all seriousness, this project seems moreso exploratory than lightweight
& simple. Either that or I do not understand the author's objectives here.

Jeremy
Received on Wed Jul 19 2023 - 19:20:40 CEST

This archive was generated by hypermail 2.3.0 : Wed Jul 19 2023 - 19:24:08 CEST