[git commit] sysctl: do slash/dot conversions only on name, not value part

Denys Vlasenko vda.linux at googlemail.com
Fri Feb 8 15:02:39 UTC 2019


commit: https://git.busybox.net/busybox/commit/?id=78301861ef9e8d0edc72898712dbce7d793150a8
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
sysctl_dots_to_slashes                                71      86     +15

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 procps/sysctl.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

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)


More information about the busybox-cvs mailing list