From 78301861ef9e8d0edc72898712dbce7d793150a8 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 8 Feb 2019 16:02:39 +0100 Subject: [PATCH] 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 --- 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)