diff options
author | Michael Gernoth | 2014-06-27 14:08:29 +0200 |
---|---|---|
committer | Denys Vlasenko | 2014-06-27 14:08:29 +0200 |
commit | 1b487ea8a69ac90b530e9ccd161a5b1b21e604c7 (patch) | |
tree | 78d79dac1e614af04d26d37a72237d0371cee458 /coreutils | |
parent | 9d7cbdeee3545d36db201a2d822cd2bd10074add (diff) | |
download | busybox-1b487ea8a69ac90b530e9ccd161a5b1b21e604c7.zip busybox-1b487ea8a69ac90b530e9ccd161a5b1b21e604c7.tar.gz |
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>
Diffstat (limited to 'coreutils')
-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 dc9d81c..769fac0 100644 --- a/coreutils/stat.c +++ b/coreutils/stat.c @@ -655,7 +655,7 @@ static bool do_stat(const char *filename, const char *format) ); # if ENABLE_SELINUX if (option_mask32 & OPT_SELINUX) - printf(" %lc\n", *scontext); + printf(" %s\n", scontext); else bb_putchar('\n'); # endif @@ -700,7 +700,8 @@ static bool do_stat(const char *filename, const char *format) (unsigned long) statbuf.st_gid, (gw_ent != NULL) ? gw_ent->gr_name : "UNKNOWN"); # if ENABLE_SELINUX - printf(" S_Context: %lc\n", *scontext); + if (option_mask32 & OPT_SELINUX) + printf(" S_Context: %s\n", scontext); # endif printf("Access: %s\n", human_time(statbuf.st_atime)); printf("Modify: %s\n", human_time(statbuf.st_mtime)); |