|
|
- From b0a2386089fd6efade6b89094325ed8a9f8c6fff Mon Sep 17 00:00:00 2001
- From: Christian Hesse <mail@eworm.de>
- Date: Sat, 22 Oct 2016 22:06:54 +0200
- Subject: [PATCH] sload.f2fs: allow to build without libselinux
-
- Some systems do not have libselinux. Allow to build sload.f2fs without
- support for selinux.
-
- Signed-off-by: Christian Hesse <mail@eworm.de>
- Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
- ---
- configure.ac | 4 +++-
- fsck/sload.c | 12 +++++++++++-
- 2 files changed, 14 insertions(+), 2 deletions(-)
-
- diff --git a/configure.ac b/configure.ac
- index f519790..7a62328 100644
- --- a/configure.ac
- +++ b/configure.ac
- @@ -54,7 +54,9 @@ AC_PATH_PROG([LDCONFIG], [ldconfig],
-
- # Checks for libraries.
- PKG_CHECK_MODULES([libuuid], [uuid])
- -PKG_CHECK_MODULES([libselinux], [libselinux])
- +PKG_CHECK_MODULES([libselinux], [libselinux],
- + [AC_DEFINE([HAVE_LIBSELINUX], [1], [Use libselinux])],
- + [AC_MSG_NOTICE([libselinux not found])])
-
- # Checks for header files.
- AC_CHECK_HEADERS([linux/fs.h fcntl.h mntent.h stdlib.h string.h \
- diff --git a/fsck/sload.c b/fsck/sload.c
- index ea072d1..68799c1 100644
- --- a/fsck/sload.c
- +++ b/fsck/sload.c
- @@ -16,8 +16,11 @@
- #include <libgen.h>
- #include <dirent.h>
- #include <mntent.h>
- +
- +#ifdef HAVE_LIBSELINUX
- #include <selinux/selinux.h>
- #include <selinux/label.h>
- +#endif
-
- #ifdef WITH_ANDROID
- #include <selinux/label.h>
- @@ -110,10 +113,12 @@ static int build_directory(struct f2fs_sb_info *sbi, const char *full_path,
- handle_selabel(dentries + i, S_ISDIR(stat.st_mode),
- target_out_dir);
-
- +#ifdef HAVE_LIBSELINUX
- if (sehnd && selabel_lookup(sehnd, &dentries[i].secon,
- dentries[i].path, stat.st_mode) < 0)
- ERR_MSG("Cannot lookup security context for %s\n",
- dentries[i].path);
- +#endif
-
- dentries[i].pino = dir_ino;
-
- @@ -174,6 +179,7 @@ static int build_directory(struct f2fs_sb_info *sbi, const char *full_path,
- MSG(1, "Error unknown file type\n");
- }
-
- +#ifdef HAVE_LIBSELINUX
- if (dentries[i].secon) {
- inode_set_selinux(sbi, dentries[i].ino, dentries[i].secon);
- MSG(1, "File = %s \n----->SELinux context = %s\n",
- @@ -184,10 +190,12 @@ static int build_directory(struct f2fs_sb_info *sbi, const char *full_path,
- dentries[i].gid, dentries[i].capabilities);
- }
-
- + free(dentries[i].secon);
- +#endif
- +
- free(dentries[i].path);
- free(dentries[i].full_path);
- free((void *)dentries[i].name);
- - free(dentries[i].secon);
- }
-
- free(dentries);
- @@ -218,6 +226,7 @@ int f2fs_sload(struct f2fs_sb_info *sbi, const char *from_dir,
- return ret;
- }
-
- +#ifdef HAVE_LIBSELINUX
- if (sehnd) {
- char *secontext = NULL;
-
- @@ -233,6 +242,7 @@ int f2fs_sload(struct f2fs_sb_info *sbi, const char *from_dir,
- }
- free(secontext);
- }
- +#endif
-
- /* update curseg info; can update sit->types */
- move_curseg_info(sbi, SM_I(sbi)->main_blkaddr);
- --
- 2.10.0
-
|