summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2018-08-01 13:16:05 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2018-08-01 13:16:05 +0200
commit48ec979ed1b3eb1441363240915ef0b9a91c545d (patch)
tree3d0d9db90b661e757946fed85f6bf9d69651a4d0
parent3550bc494d8fe51e8830929a4f543931030aaab0 (diff)
udhcpc: do in fact not allow hostname components which start with dash
function old new delta xmalloc_optname_optval 879 893 +14 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--networking/udhcp/dhcpc.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c
index c2805a009..3afdb35fe 100644
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -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;