[git commit] sysctl: do report EACCES errors on write

Denys Vlasenko vda.linux at googlemail.com
Tue Jun 9 13:58:32 UTC 2020


commit: https://git.busybox.net/busybox/commit/?id=002be6e821eedfa190c5b060e7b61acb306c2a92
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
sysctl_act_recursive                                 165     179     +14
sysctl_act_on_setting                                467     471      +4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 18/0)               Total: 18 bytes

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 procps/sysctl.c          | 9 ++++++---
 testsuite/unexpand.tests | 4 ++--
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/procps/sysctl.c b/procps/sysctl.c
index 6d77185ca..e16b119e9 100644
--- a/procps/sysctl.c
+++ b/procps/sysctl.c
@@ -169,13 +169,15 @@ static int sysctl_act_on_setting(char *setting)
 
 	if (fd < 0) {
 		switch (errno) {
-		case EACCES:
-			/* Happens for write-only settings, e.g. net.ipv6.route.flush */
-			goto end;
 		case ENOENT:
 			if (option_mask32 & FLAG_SHOW_KEY_ERRORS)
 				bb_error_msg("error: '%s' is an unknown key", outname);
 			break;
+		case EACCES:
+			/* Happens for write-only settings, e.g. net.ipv6.route.flush */
+			if (!writing)
+				goto end;
+			/* fall through */
 		default:
 			bb_perror_msg("error %sing key '%s'",
 					writing ?
@@ -236,6 +238,7 @@ static int sysctl_act_recursive(const char *path)
 	int retval = 0;
 
 	if (!(option_mask32 & FLAG_WRITE)
+	 && !strchr(path, '=')  /* do not try to resurse on "var=val" */
 	 && stat(path, &buf) == 0
 	 && S_ISDIR(buf.st_mode)
 	) {
diff --git a/testsuite/unexpand.tests b/testsuite/unexpand.tests
index 4ab693ec8..aeaae13f0 100755
--- a/testsuite/unexpand.tests
+++ b/testsuite/unexpand.tests
@@ -33,8 +33,8 @@ testing "unexpand case 8" "unexpand" \
 
 testcase()
 {
-    testing "unexpand flags $*" "unexpand $*" \
-        "$want" "" '        a       b    c'
+	testing "unexpand flags $*" "unexpand $*" \
+		"$want" "" '        a       b    c'
 }
 
 # tabs=8, Convert only leading sequences of blanks


More information about the busybox-cvs mailing list