diff options
author | Michael Gernoth <michael@gernoth.net> | 2014-06-27 14:08:29 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2014-06-27 14:08:29 +0200 |
commit | 1b487ea8a69ac90b530e9ccd161a5b1b21e604c7 (patch) | |
tree | 78d79dac1e614af04d26d37a72237d0371cee458 | |
parent | 9d7cbdeee3545d36db201a2d822cd2bd10074add (diff) | |
download | busybox-w32-1b487ea8a69ac90b530e9ccd161a5b1b21e604c7.tar.gz busybox-w32-1b487ea8a69ac90b530e9ccd161a5b1b21e604c7.tar.bz2 busybox-w32-1b487ea8a69ac90b530e9ccd161a5b1b21e604c7.zip |
stat: fix printing selinux context and null-dereference
busybox stat tries to always print the selinux context, even if it
is not requested which leads to a segmentation fault due to
dereferencing a null-pointer.
This also changes the format-string used to print the context to
so it actually produces useful output.
Signed-off-by: Michael Gernoth <michael@gernoth.net>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | coreutils/stat.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/coreutils/stat.c b/coreutils/stat.c index dc9d81c35..769fac078 100644 --- a/coreutils/stat.c +++ b/coreutils/stat.c | |||
@@ -655,7 +655,7 @@ static bool do_stat(const char *filename, const char *format) | |||
655 | ); | 655 | ); |
656 | # if ENABLE_SELINUX | 656 | # if ENABLE_SELINUX |
657 | if (option_mask32 & OPT_SELINUX) | 657 | if (option_mask32 & OPT_SELINUX) |
658 | printf(" %lc\n", *scontext); | 658 | printf(" %s\n", scontext); |
659 | else | 659 | else |
660 | bb_putchar('\n'); | 660 | bb_putchar('\n'); |
661 | # endif | 661 | # endif |
@@ -700,7 +700,8 @@ static bool do_stat(const char *filename, const char *format) | |||
700 | (unsigned long) statbuf.st_gid, | 700 | (unsigned long) statbuf.st_gid, |
701 | (gw_ent != NULL) ? gw_ent->gr_name : "UNKNOWN"); | 701 | (gw_ent != NULL) ? gw_ent->gr_name : "UNKNOWN"); |
702 | # if ENABLE_SELINUX | 702 | # if ENABLE_SELINUX |
703 | printf(" S_Context: %lc\n", *scontext); | 703 | if (option_mask32 & OPT_SELINUX) |
704 | printf(" S_Context: %s\n", scontext); | ||
704 | # endif | 705 | # endif |
705 | printf("Access: %s\n", human_time(statbuf.st_atime)); | 706 | printf("Access: %s\n", human_time(statbuf.st_atime)); |
706 | printf("Modify: %s\n", human_time(statbuf.st_mtime)); | 707 | printf("Modify: %s\n", human_time(statbuf.st_mtime)); |