Browse Source

chcon: fix issues with recurse and retval for retained files

- recurse is not acting as expected (looks like broken old code)
- when not using verbose output, return value for retained files is 1,
  which is not expected.

Signed-off-by: sagivd <sagivdev@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
sagivd 5 years ago
parent
commit
8f1ae25634
1 changed files with 5 additions and 3 deletions
  1. 5 3
      selinux/chcon.c

+ 5 - 3
selinux/chcon.c

@@ -131,8 +131,10 @@ static int FAST_FUNC change_filedir_context(
 			bb_error_msg("can't change context of %s to %s",
 					fname, context_string);
 		}
-	} else if (option_mask32 & OPT_VERBOSE) {
-		printf("context of %s retained as %s\n", fname, context_string);
+	} else {
+		if (option_mask32 & OPT_VERBOSE) {
+			printf("context of %s retained as %s\n", fname, context_string);
+		}
 		rc = TRUE;
 	}
 skip:
@@ -202,7 +204,7 @@ int chcon_main(int argc UNUSED_PARAM, char **argv)
 		fname[fname_len] = '\0';
 
 		if (recursive_action(fname,
-					1<<option_mask32 & OPT_RECURSIVE,
+					((option_mask32 & OPT_RECURSIVE) ? ACTION_RECURSIVE : 0),
 					change_filedir_context,
 					change_filedir_context,
 					NULL, 0) != TRUE)