aboutsummaryrefslogtreecommitdiff
path: root/coreutils
diff options
context:
space:
mode:
authorMichael Gernoth <michael@gernoth.net>2014-06-27 14:08:29 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2014-06-27 14:08:29 +0200
commit1b487ea8a69ac90b530e9ccd161a5b1b21e604c7 (patch)
tree78d79dac1e614af04d26d37a72237d0371cee458 /coreutils
parent9d7cbdeee3545d36db201a2d822cd2bd10074add (diff)
downloadbusybox-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.c5
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)
);
# 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));