From: Evgeny Vereshchagin Date: Sat, 26 Nov 2022 12:02:46 +0000 (+0000) Subject: resolve: format zero-length RDATA according to rfc3597 X-Git-Tag: v253-rc1~371^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=84f788d6699f289160d7cb3823c1bf9a3826f11f;p=thirdparty%2Fsystemd.git resolve: format zero-length RDATA according to rfc3597 If the RDATA is of zero length, the text representation contains only the \# token and the single zero representing the length. --- diff --git a/src/resolve/resolved-dns-rr.c b/src/resolve/resolved-dns-rr.c index d47cdbbd8e2..f4fa219ab7c 100644 --- a/src/resolve/resolved-dns-rr.c +++ b/src/resolve/resolved-dns-rr.c @@ -1137,12 +1137,15 @@ const char *dns_resource_record_to_string(DnsResourceRecord *rr) { break; default: - t = hexmem(rr->generic.data, rr->generic.data_size); - if (!t) - return NULL; - /* Format as documented in RFC 3597, Section 5 */ - r = asprintf(&s, "%s \\# %zu %s", k, rr->generic.data_size, t); + if (rr->generic.data_size == 0) + r = asprintf(&s, "%s \\# 0", k); + else { + t = hexmem(rr->generic.data, rr->generic.data_size); + if (!t) + return NULL; + r = asprintf(&s, "%s \\# %zu %s", k, rr->generic.data_size, t); + } if (r < 0) return NULL; break;