aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2015-10-24 04:45:22 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2015-10-24 04:45:22 +0200
commit9a512176686d5f1548dc1e1c610af440a3ee0d73 (patch)
tree06fe3e63ae4879e8efa4282203a4db6a8088e718
parent941e7a491971574e5d06227f8dc63806335b8745 (diff)
downloadbusybox-w32-9a512176686d5f1548dc1e1c610af440a3ee0d73.tar.gz
busybox-w32-9a512176686d5f1548dc1e1c610af440a3ee0d73.tar.bz2
busybox-w32-9a512176686d5f1548dc1e1c610af440a3ee0d73.zip
dumpleases: make host names sanitized to shell-friendly condition
function old new delta add_lease 271 298 +27 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--networking/udhcp/leases.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/networking/udhcp/leases.c b/networking/udhcp/leases.c
index 745340ad3..844bb60b1 100644
--- a/networking/udhcp/leases.c
+++ b/networking/udhcp/leases.c
@@ -65,10 +65,15 @@ struct dyn_lease* FAST_FUNC add_lease(
65 if (hostname_len > sizeof(oldest->hostname)) 65 if (hostname_len > sizeof(oldest->hostname))
66 hostname_len = sizeof(oldest->hostname); 66 hostname_len = sizeof(oldest->hostname);
67 p = safe_strncpy(oldest->hostname, hostname, hostname_len); 67 p = safe_strncpy(oldest->hostname, hostname, hostname_len);
68 /* sanitization (s/non-ASCII/^/g) */ 68 /*
69 * Sanitization (s/bad_char/./g).
70 * The intent is not to allow only "DNS-valid" hostnames,
71 * but merely make dumpleases output safe for shells to use.
72 * We accept "0-9A-Za-z._-", all other chars turn to dots.
73 */
69 while (*p) { 74 while (*p) {
70 if (*p < ' ' || *p > 126) 75 if (!isalnum(*p) && *p != '-' && *p != '_')
71 *p = '^'; 76 *p = '.';
72 p++; 77 p++;
73 } 78 }
74 } 79 }