sysctl: fix another corner case with "dots and slashes"

This commit is contained in:
Denis Vlasenko 2009-01-08 03:35:47 +00:00
parent cb39a7ca6d
commit 501b0e335f

View File

@ -233,6 +233,12 @@ static void sysctl_dots_to_slashes(char *name)
* we replaced even one . -> /, start over again,
* but never replace dots before the position
* where last replacement occurred.
*
* Another bug we later had is that
* net.ipv4.conf.eth0.100
* (without .mc_forwarding) was mishandled.
*
* To set up testing: modprobe 8021q; vconfig add eth0 100
*/
end = name + strlen(name);
last_good = name - 1;
@ -245,8 +251,8 @@ static void sysctl_dots_to_slashes(char *name)
*cptr = '\0';
//bb_error_msg("trying:'%s'", name);
if (access(name, F_OK) == 0) {
if (cptr != end) /* prevent trailing '/' */
*cptr = '/';
*end = '\0'; /* prevent trailing '/' */
//bb_error_msg("replaced:'%s'", name);
last_good = cptr;
goto again;