]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolve: format zero-length RDATA according to rfc3597 25537/head
authorEvgeny Vereshchagin <evvers@ya.ru>
Sat, 26 Nov 2022 12:02:46 +0000 (12:02 +0000)
committerEvgeny Vereshchagin <evvers@ya.ru>
Sat, 26 Nov 2022 12:20:21 +0000 (12:20 +0000)
If the RDATA is of zero length, the text representation contains only
the \# token and the single zero representing the length.

src/resolve/resolved-dns-rr.c

index d47cdbbd8e2753637831f3824079f5ac22bfcaf4..f4fa219ab7c241fa0a80bf59633b53826806d845 100644 (file)
@@ -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;