From c04808a532b0421fded05eecf5d843c45b7eb407 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Mon, 26 Nov 2012 16:32:16 -0800 Subject: make_ext4fs: fix sepolicy lookup for lost+found selabel_lookup needs the full path including mountpoint. Change-Id: Idc0641683a4e4528d94e54be1897315bf5fcdb0d --- ext4_utils/make_ext4fs.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/ext4_utils/make_ext4fs.c b/ext4_utils/make_ext4fs.c index 85dad4e7..db6fbe6f 100644 --- a/ext4_utils/make_ext4fs.c +++ b/ext4_utils/make_ext4fs.c @@ -215,7 +215,7 @@ static u32 build_directory_structure(const char *full_path, const char *dir_path dentries = tmp; dentries[0].filename = strdup("lost+found"); - dentries[0].path = strdup("/lost+found"); + asprintf(&dentries[0].path, "%s/lost+found", dir_path); dentries[0].full_path = NULL; dentries[0].size = 0; dentries[0].mode = S_IRWXU; @@ -223,9 +223,13 @@ static u32 build_directory_structure(const char *full_path, const char *dir_path dentries[0].uid = 0; dentries[0].gid = 0; #ifdef HAVE_SELINUX - if (sehnd) - if (selabel_lookup(sehnd, &dentries[0].secon, "lost+found", dentries[0].mode) < 0) - error("cannot lookup security context for /lost+found"); + if (sehnd) { + char *sepath = NULL; + asprintf(&sepath, "/%s", dentries[0].path); + if (selabel_lookup(sehnd, &dentries[0].secon, sepath, dentries[0].mode) < 0) + error("cannot lookup security context for %s", dentries[0].path); + free(sepath); + } #endif entries++; dirs++; -- cgit v1.2.3