X-Git-Url: https://git.distorted.org.uk/~mdw/adns/blobdiff_plain/705b9b159806e6e96839c81668f685a6576ea961..e4007092f843cf382791448bcb839ff13c13c535:/src/general.c?ds=inline diff --git a/src/general.c b/src/general.c index facc0b5..7703254 100644 --- a/src/general.c +++ b/src/general.c @@ -38,12 +38,11 @@ /* Core diagnostic functions */ -const char *adns__sockaddr_ntoa(struct sockaddr *sa, size_t n) +const char *adns__sockaddr_ntoa(struct sockaddr *sa, size_t n, char *buf) { - static char buf[64]; int err; - err = getnameinfo(sa, n, buf, sizeof(buf), 0, 0, NI_NUMERICHOST); + err = getnameinfo(sa, n, buf, MAX_ADDRSTRLEN, 0, 0, NI_NUMERICHOST); assert(!err); return buf; } @@ -61,6 +60,7 @@ void adns__lprintf(adns_state ads, const char *fmt, ...) { void adns__vdiag(adns_state ads, const char *pfx, adns_initflags prevent, int serv, adns_query qu, const char *fmt, va_list al) { + char buf[MAX_ADDRSTRLEN]; const char *bef, *aft; vbuf vb; @@ -96,7 +96,7 @@ void adns__vdiag(adns_state ads, const char *pfx, adns_initflags prevent, if (serv>=0) { adns__lprintf(ads,"%sNS=%s",bef, adns__sockaddr_ntoa(&ads->servers[serv].addr.sa, - ads->servers[serv].len)); + ads->servers[serv].len, buf)); bef=", "; aft=")\n"; } @@ -222,7 +222,7 @@ adns_status adns_rr_info(adns_rrtype type, if (rrtname_r) *rrtname_r= typei->rrtname; if (fmtname_r) *fmtname_r= typei->fmtname; - if (len_r) *len_r= typei->rrsz; + if (len_r) *len_r= typei->getrrsz ? typei->getrrsz(type) : typei->rrsz; if (!datap) return adns_s_ok;