chiark / gitweb /
resolved: various fixes regarding encoding of UTF8 characters in DNS RRs
authorLennart Poettering <lennart@poettering.net>
Thu, 31 Jul 2014 17:51:11 +0000 (19:51 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 31 Jul 2014 17:51:11 +0000 (19:51 +0200)
src/resolve/resolved-dns-domain.c

index f3e7df7a1e819c36d8f068eb8886f6cec8bedba6..c2a435944ca5856ca438a79d6612b498031066d3 100644 (file)
@@ -88,7 +88,7 @@ int dns_label_unescape(const char **name, char *dest, size_t sz) {
                         } else
                                 return -EINVAL;
 
-                } else if (*n >= ' ' && *n != 127) {
+                } else if ((uint8_t) *n >= (uint8_t) ' ' && *n != 127) {
 
                         /* Normal character */
                         *(d++) = *(n++);
@@ -141,13 +141,13 @@ int dns_label_escape(const char *p, size_t l, char **ret) {
 
                         /* Proper character */
                         *(q++) = *p;
-                } else if (*p >= ' ' && *p != 127) {
+                } else if ((uint8_t) *p >= (uint8_t) ' ' && *p != 127) {
 
                         /* Everything else */
                         *(q++) = '\\';
-                        *(q++) = '0' + (char) ((unsigned) *p / 100);
-                        *(q++) = '0' + (char) (((unsigned) *p / 10) % 10);
-                        *(q++) = '0' + (char) ((unsigned) *p % 10);
+                        *(q++) = '0' + (char) ((uint8_t) *p / 100);
+                        *(q++) = '0' + (char) (((uint8_t) *p / 10) % 10);
+                        *(q++) = '0' + (char) ((uint8_t) *p % 10);
 
                 } else
                         return -EINVAL;