aboutsummaryrefslogtreecommitdiff
path: root/selinux/setfiles.c
diff options
context:
space:
mode:
Diffstat (limited to 'selinux/setfiles.c')
-rw-r--r--selinux/setfiles.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/selinux/setfiles.c b/selinux/setfiles.c
index 0a4643784..4686d8042 100644
--- a/selinux/setfiles.c
+++ b/selinux/setfiles.c
@@ -490,7 +490,7 @@ static int process_one(char *name)
490} 490}
491 491
492int setfiles_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 492int setfiles_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
493int setfiles_main(int argc, char **argv) 493int setfiles_main(int argc UNUSED_PARAM, char **argv)
494{ 494{
495 struct stat sb; 495 struct stat sb;
496 int rc, i = 0; 496 int rc, i = 0;
@@ -549,6 +549,7 @@ int setfiles_main(int argc, char **argv)
549 IF_FEATURE_SETFILES_CHECK_OPTION(&policyfile,) 549 IF_FEATURE_SETFILES_CHECK_OPTION(&policyfile,)
550 &verbose); 550 &verbose);
551 } 551 }
552 argv += optind;
552 553
553#if ENABLE_FEATURE_SETFILES_CHECK_OPTION 554#if ENABLE_FEATURE_SETFILES_CHECK_OPTION
554 if ((applet_name[0] == 's') && (flags & OPT_c)) { 555 if ((applet_name[0] == 's') && (flags & OPT_c)) {
@@ -595,24 +596,20 @@ int setfiles_main(int argc, char **argv)
595 we can support either checking against the active policy or 596 we can support either checking against the active policy or
596 checking against a binary policy file. */ 597 checking against a binary policy file. */
597 set_matchpathcon_canoncon(&canoncon); 598 set_matchpathcon_canoncon(&canoncon);
598 if (argc == 1) 599 if (!argv[0])
599 bb_show_usage(); 600 bb_show_usage();
600 if (stat(argv[optind], &sb) < 0) { 601 xstat(argv[0], &sb);
601 bb_simple_perror_msg_and_die(argv[optind]);
602 }
603 if (!S_ISREG(sb.st_mode)) { 602 if (!S_ISREG(sb.st_mode)) {
604 bb_error_msg_and_die("spec file %s is not a regular file", argv[optind]); 603 bb_error_msg_and_die("spec file %s is not a regular file", argv[0]);
605 } 604 }
606 /* Load the file contexts configuration and check it. */ 605 /* Load the file contexts configuration and check it. */
607 rc = matchpathcon_init(argv[optind]); 606 rc = matchpathcon_init(argv[0]);
608 if (rc < 0) { 607 if (rc < 0) {
609 bb_simple_perror_msg_and_die(argv[optind]); 608 bb_simple_perror_msg_and_die(argv[0]);
610 } 609 }
611
612 optind++;
613
614 if (nerr) 610 if (nerr)
615 exit(EXIT_FAILURE); 611 exit(EXIT_FAILURE);
612 argv++;
616 } 613 }
617 614
618 if (input_filename) { 615 if (input_filename) {
@@ -628,9 +625,9 @@ int setfiles_main(int argc, char **argv)
628 if (ENABLE_FEATURE_CLEAN_UP) 625 if (ENABLE_FEATURE_CLEAN_UP)
629 fclose_if_not_stdin(f); 626 fclose_if_not_stdin(f);
630 } else { 627 } else {
631 if (optind >= argc) 628 if (!argv[0])
632 bb_show_usage(); 629 bb_show_usage();
633 for (i = optind; i < argc; i++) { 630 for (i = 0; argv[i]; i++) {
634 errors |= process_one(argv[i]); 631 errors |= process_one(argv[i]);
635 } 632 }
636 } 633 }