From: Denys Vlasenko Date: Fri, 8 Feb 2019 15:02:39 +0000 (+0100) Subject: sysctl: do slash/dot conversions only on name, not value part X-Git-Tag: 1_31_0~178 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=78301861ef9e8d0edc72898712dbce7d793150a8;p=oweals%2Fbusybox.git sysctl: do slash/dot conversions only on name, not value part function old new delta sysctl_dots_to_slashes 71 86 +15 Signed-off-by: Denys Vlasenko --- diff --git a/procps/sysctl.c b/procps/sysctl.c index 94a307901..5303460f9 100644 --- a/procps/sysctl.c +++ b/procps/sysctl.c @@ -57,6 +57,7 @@ enum { static void sysctl_dots_to_slashes(char *name) { char *cptr, *last_good, *end; + char end_ch; /* Convert minimum number of '.' to '/' so that * we end up with existing file's name. @@ -76,10 +77,11 @@ static void sysctl_dots_to_slashes(char *name) * * To set up testing: modprobe 8021q; vconfig add eth0 100 */ - end = name + strlen(name); - last_good = name - 1; + end = strchrnul(name, '='); + end_ch = *end; *end = '.'; /* trick the loop into trying full name too */ + last_good = name - 1; again: cptr = end; while (cptr > last_good) { @@ -96,7 +98,7 @@ static void sysctl_dots_to_slashes(char *name) } cptr--; } - *end = '\0'; + *end = end_ch; } static int sysctl_act_on_setting(char *setting)