← Commit list

501b0e335

Denis Vlasenko
Denis Vlasenko
2009-01-08
FAILED Duration: 29s

Subject

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

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

procps/sysctl.c+8 -2
@@ -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) {
- *cptr = '/';
- *end = '\0'; /* prevent trailing '/' */
+ if (cptr != end) /* prevent trailing '/' */
+ *cptr = '/';
//bb_error_msg("replaced:'%s'", name);
last_good = cptr;
goto again;