stat: fix printing selinux context and null-dereference
authorMichael Gernoth <michael@gernoth.net>
Fri, 27 Jun 2014 12:08:29 +0000 (14:08 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Fri, 27 Jun 2014 12:08:29 +0000 (14:08 +0200)
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>
coreutils/stat.c

index dc9d81c357cea78c01129cf44f1dd486d2c9316f..769fac078e6434507d6541b062e25fddcda1b575 100644 (file)
@@ -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));