]> err.no Git - systemd/commitdiff
selinux: fix labels only when configured for it
authorLennart Poettering <lennart@poettering.net>
Thu, 5 Aug 2010 11:40:16 +0000 (13:40 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 5 Aug 2010 17:50:02 +0000 (19:50 +0200)
src/util.c

index 39dca0d4587ffdea104964a078be4e133506b017..ec5c7ca91aacbb19c807015c402fc5baed38cba1 100644 (file)
@@ -122,7 +122,7 @@ int label_fix(const char *path) {
         struct stat st;
         security_context_t fcon;
 
-        if (!use_selinux())
+        if (!use_selinux() || !label_hnd)
                 return 0;
 
         r = lstat(path, &st);
@@ -147,7 +147,7 @@ int label_fix(const char *path) {
 void label_finish(void) {
 
 #ifdef HAVE_SELINUX
-        if (use_selinux())
+        if (use_selinux() && label_hnd)
                 selabel_close(label_hnd);
 #endif
 }
@@ -270,7 +270,7 @@ static int label_mkdir(
         int r;
         security_context_t fcon = NULL;
 
-        if (use_selinux()) {
+        if (use_selinux() && label_hnd) {
                 if (path[0] == '/') {
                         r = selabel_lookup_raw(label_hnd, &fcon, path, mode);
                 }
@@ -300,7 +300,7 @@ static int label_mkdir(
         r = mkdir(path, mode);
 
 finish:
-        if (use_selinux()) {
+        if (use_selinux() && label_hnd) {
                 setfscreatecon(NULL);
                 freecon(fcon);
         }