diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2019-09-28 21:10:15 +0200 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2019-09-28 23:34:17 +0200 |
commit | f415b29255819e19ffde16018fb9ad02cbbfd17c (patch) | |
tree | 41dfa5a80fdb2015098ad5f4210acc4c21ec3cd0 /lib/fstree | |
parent | 5e4d53c713d3f01ae2d24a7d2311d65761b143dc (diff) |
Move fstree selinux code to gensquashfs
Same rational as for the dir-scanner code: It's actually the only user and
it is going to get a lot closer integerated with libsquashfs.
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'lib/fstree')
-rw-r--r-- | lib/fstree/Makemodule.am | 7 | ||||
-rw-r--r-- | lib/fstree/selinux.c | 70 |
2 files changed, 1 insertions, 76 deletions
diff --git a/lib/fstree/Makemodule.am b/lib/fstree/Makemodule.am index 960ab1d..fe2c5ca 100644 --- a/lib/fstree/Makemodule.am +++ b/lib/fstree/Makemodule.am @@ -6,12 +6,7 @@ libfstree_a_SOURCES += lib/fstree/add_by_path.c lib/fstree/xattr.c libfstree_a_SOURCES += include/fstree.h libfstree_a_SOURCES += lib/fstree/gen_file_list.c libfstree_a_SOURCES += lib/fstree/source_date_epoch.c -libfstree_a_CFLAGS = $(AM_CFLAGS) $(LIBSELINUX_CFLAGS) +libfstree_a_CFLAGS = $(AM_CFLAGS) libfstree_a_CPPFLAGS = $(AM_CPPFLAGS) -if WITH_SELINUX -libfstree_a_SOURCES += lib/fstree/selinux.c -libfstree_a_CPPFLAGS += -DWITH_SELINUX -endif - noinst_LIBRARIES += libfstree.a diff --git a/lib/fstree/selinux.c b/lib/fstree/selinux.c deleted file mode 100644 index 1cb921d..0000000 --- a/lib/fstree/selinux.c +++ /dev/null @@ -1,70 +0,0 @@ -/* SPDX-License-Identifier: GPL-3.0-or-later */ -/* - * selinux.c - * - * Copyright (C) 2019 David Oberhollenzer <goliath@infraroot.at> - */ -#include "config.h" - -#include "fstree.h" - -#include <selinux/selinux.h> -#include <selinux/label.h> -#include <string.h> -#include <stdlib.h> -#include <stdio.h> - -#define XATTR_NAME_SELINUX "security.selinux" -#define XATTR_VALUE_SELINUX "system_u:object_r:unlabeled_t:s0" - -static int relable_node(fstree_t *fs, struct selabel_handle *sehnd, - tree_node_t *node) -{ - char *context = NULL, *path; - int ret; - - path = fstree_get_path(node); - if (path == NULL) - goto fail; - - if (selabel_lookup(sehnd, &context, path, node->mode) < 0) { - context = strdup(XATTR_VALUE_SELINUX); - if (context == NULL) - goto fail; - } - - ret = fstree_add_xattr(fs, node, XATTR_NAME_SELINUX, context); - free(context); - free(path); - return ret; -fail: - perror("relabeling files"); - free(path); - return -1; -} - -int fstree_relabel_selinux(fstree_t *fs, const char *filename) -{ - struct selabel_handle *sehnd; - struct selinux_opt seopts[] = { - { SELABEL_OPT_PATH, filename }, - }; - size_t i; - int ret = 0; - - sehnd = selabel_open(SELABEL_CTX_FILE, seopts, 1); - - if (sehnd == NULL) { - perror(filename); - return -1; - } - - for (i = 2; i < fs->inode_tbl_size; ++i) { - ret = relable_node(fs, sehnd, fs->inode_table[i]); - if (ret) - break; - } - - selabel_close(sehnd); - return ret; -} |