sload.f2fs: allow to build without libselinux
authorChristian Hesse <mail@eworm.de>
Sat, 22 Oct 2016 20:06:54 +0000 (22:06 +0200)
committerJaegeuk Kim <jaegeuk@kernel.org>
Sun, 23 Oct 2016 21:36:49 +0000 (14:36 -0700)
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
fsck/sload.c

index f519790..7a62328 100644 (file)
@@ -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 \
index ea072d1..68799c1 100644 (file)
 #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);