udhcpc: make hostname sanitization optional. Closes 3979

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2014-06-16 00:17:00 +02:00
parent 9aa6ffb22b
commit 85090c162b
2 changed files with 15 additions and 0 deletions

View File

@ -84,6 +84,17 @@ config FEATURE_UDHCPC_ARPING
will DHCPDECLINE the offer if the address is in use, will DHCPDECLINE the offer if the address is in use,
and restart the discover process. and restart the discover process.
config FEATURE_UDHCPC_SANITIZEOPT
bool "Do not pass malformed host and domain names"
default y
depends on UDHCPC
help
If selected, udhcpc will check some options (such as option 12 -
hostname) and if they don't look like valid hostnames
(for example, if they start with dash or contain spaces),
they will be replaced with string "bad" when exporting
to the environment.
config FEATURE_UDHCP_PORT config FEATURE_UDHCP_PORT
bool "Enable '-P port' option for udhcpd and udhcpc" bool "Enable '-P port' option for udhcpd and udhcpc"
default n default n

View File

@ -136,6 +136,7 @@ static int mton(uint32_t mask)
return i; return i;
} }
#if ENABLE_FEATURE_UDHCPC_SANITIZEOPT
/* Check if a given label represents a valid DNS label /* Check if a given label represents a valid DNS label
* Return pointer to the first character after the label upon success, * Return pointer to the first character after the label upon success,
* NULL otherwise. * NULL otherwise.
@ -192,6 +193,9 @@ static int good_hostname(const char *name)
name++; name++;
} }
} }
#else
# define good_hostname(name) 1
#endif
/* Create "opt_name=opt_value" string */ /* Create "opt_name=opt_value" string */
static NOINLINE char *xmalloc_optname_optval(uint8_t *option, const struct dhcp_optflag *optflag, const char *opt_name) static NOINLINE char *xmalloc_optname_optval(uint8_t *option, const struct dhcp_optflag *optflag, const char *opt_name)