udhcpc: do in fact not allow hostname components which start with dash
authorDenys Vlasenko <vda.linux@googlemail.com>
Wed, 1 Aug 2018 11:16:05 +0000 (13:16 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Wed, 1 Aug 2018 11:16:05 +0000 (13:16 +0200)
function                                             old     new   delta
xmalloc_optname_optval                               879     893     +14

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
networking/udhcp/dhcpc.c

index c2805a0090cf2949e881f89b381ad69714e472a9..3afdb35fe376e2fc7e3c6baa9cc46080c794385a 100644 (file)
@@ -160,8 +160,8 @@ static int mton(uint32_t mask)
 
 #if ENABLE_FEATURE_UDHCPC_SANITIZEOPT
 /* Check if a given label represents a valid DNS label
- * Return pointer to the first character after the label upon success,
- * NULL otherwise.
+ * Return pointer to the first character after the label
+ * (NUL or dot) upon success, NULL otherwise.
  * See RFC1035, 2.3.1
  */
 /* We don't need to be particularly anal. For example, allowing _, hyphen
@@ -173,8 +173,10 @@ static int mton(uint32_t mask)
 static const char *valid_domain_label(const char *label)
 {
        unsigned char ch;
-       unsigned pos = 0;
+       //unsigned pos = 0;
 
+       if (label[0] == '-')
+               return NULL;
        for (;;) {
                ch = *label;
                if ((ch|0x20) < 'a' || (ch|0x20) > 'z') {
@@ -187,7 +189,7 @@ static const char *valid_domain_label(const char *label)
                        }
                }
                label++;
-               pos++;
+               //pos++;
                //Do we want this?
                //if (pos > 63) /* NS_MAXLABEL; labels must be 63 chars or less */
                //      return NULL;