aboutsummaryrefslogtreecommitdiff
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)
downloadbusybox-w32-48ec979ed1b3eb1441363240915ef0b9a91c545d.tar.gz
busybox-w32-48ec979ed1b3eb1441363240915ef0b9a91c545d.tar.bz2
busybox-w32-48ec979ed1b3eb1441363240915ef0b9a91c545d.zip
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)
160 160
161#if ENABLE_FEATURE_UDHCPC_SANITIZEOPT 161#if ENABLE_FEATURE_UDHCPC_SANITIZEOPT
162/* Check if a given label represents a valid DNS label 162/* Check if a given label represents a valid DNS label
163 * Return pointer to the first character after the label upon success, 163 * Return pointer to the first character after the label
164 * NULL otherwise. 164 * (NUL or dot) upon success, NULL otherwise.
165 * See RFC1035, 2.3.1 165 * See RFC1035, 2.3.1
166 */ 166 */
167/* We don't need to be particularly anal. For example, allowing _, hyphen 167/* We don't need to be particularly anal. For example, allowing _, hyphen
@@ -173,8 +173,10 @@ static int mton(uint32_t mask)
173static const char *valid_domain_label(const char *label) 173static const char *valid_domain_label(const char *label)
174{ 174{
175 unsigned char ch; 175 unsigned char ch;
176 unsigned pos = 0; 176 //unsigned pos = 0;
177 177
178 if (label[0] == '-')
179 return NULL;
178 for (;;) { 180 for (;;) {
179 ch = *label; 181 ch = *label;
180 if ((ch|0x20) < 'a' || (ch|0x20) > 'z') { 182 if ((ch|0x20) < 'a' || (ch|0x20) > 'z') {
@@ -187,7 +189,7 @@ static const char *valid_domain_label(const char *label)
187 } 189 }
188 } 190 }
189 label++; 191 label++;
190 pos++; 192 //pos++;
191 //Do we want this? 193 //Do we want this?
192 //if (pos > 63) /* NS_MAXLABEL; labels must be 63 chars or less */ 194 //if (pos > 63) /* NS_MAXLABEL; labels must be 63 chars or less */
193 // return NULL; 195 // return NULL;