]> git.ipfire.org Git - people/ms/dnsmasq.git/blobdiff - src/rfc1035.c
Allow control characters in names in the cache, handle when logging.
[people/ms/dnsmasq.git] / src / rfc1035.c
index 10832a3d5d2e3e81e04a5576ba705947c38bd496..7a07b0cee90655e296f57fa79f4d4a3a409b7b89 100644 (file)
@@ -16,7 +16,6 @@
 
 #include "dnsmasq.h"
 
-/* isExtract == 2 -> DNSSEC mode, no bitstrings, no ascii checks. */
 int extract_name(struct dns_header *header, size_t plen, unsigned char **pp, 
                 char *name, int isExtract, int extrabytes)
 {
@@ -87,7 +86,7 @@ int extract_name(struct dns_header *header, size_t plen, unsigned char **pp,
          if ((l & 0x3f) != 1)
            return 0; /* we only understand bitstrings */
 
-         if (isExtract != 1)
+         if (!isExtract)
            return 0; /* Cannot compare bitsrings */
          
          count = *p++;
@@ -129,8 +128,8 @@ int extract_name(struct dns_header *header, size_t plen, unsigned char **pp,
            if (isExtract)
              {
                unsigned char c = *p;
-               if ((isExtract == 2 || (isascii(c) && !iscntrl(c))) && c != '.')
-                 *cp++ = *p;
+               if (c != 0 && c != '.')
+                 *cp++ = c;
                else
                  return 0;
              }