udhcpc: make hostname sanitization optional. Closes 3979
authorDenys Vlasenko <vda.linux@googlemail.com>
Sun, 15 Jun 2014 22:17:00 +0000 (00:17 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Sun, 15 Jun 2014 22:17:00 +0000 (00:17 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
networking/udhcp/Config.src
networking/udhcp/dhcpc.c

index 6bfa398ea890ddeca244814dcecb1660b53b645d..c34c8d6f08ce63e51b13a035e30f5985009ddd57 100644 (file)
@@ -84,6 +84,17 @@ config FEATURE_UDHCPC_ARPING
          will DHCPDECLINE the offer if the address is in use,
          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
        bool "Enable '-P port' option for udhcpd and udhcpc"
        default n
index 7dfc160e2dc801234bdc3060f661c92e007a43b4..e468b7bbb51ba8c170d1b8a957bc9e7a4355f6de 100644 (file)
@@ -136,6 +136,7 @@ static int mton(uint32_t mask)
        return i;
 }
 
+#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.
@@ -192,6 +193,9 @@ static int good_hostname(const char *name)
                name++;
        }
 }
+#else
+# define good_hostname(name) 1
+#endif
 
 /* Create "opt_name=opt_value" string */
 static NOINLINE char *xmalloc_optname_optval(uint8_t *option, const struct dhcp_optflag *optflag, const char *opt_name)