selinux_checked, selinux_enabled, and set_orig are now booleans.

This commit is contained in:
nekral-guest 2008-05-25 23:45:21 +00:00
parent 7f9dfde0dc
commit cc7ac94641
2 changed files with 15 additions and 7 deletions

View File

@ -1,3 +1,8 @@
2008-05-26 Nicolas François <nicolas.francois@centraliens.net>
* libmisc/copydir.c: selinux_checked, selinux_enabled, and set_orig
are now booleans.
2008-05-26 Nicolas François <nicolas.francois@centraliens.net> 2008-05-26 Nicolas François <nicolas.francois@centraliens.net>
* libmisc/setugid.c (setup_uid_gid): The is_console argument is now * libmisc/setugid.c (setup_uid_gid): The is_console argument is now

View File

@ -43,7 +43,6 @@
#include "defines.h" #include "defines.h"
#ifdef WITH_SELINUX #ifdef WITH_SELINUX
#include <selinux/selinux.h> #include <selinux/selinux.h>
static int selinux_enabled = -1;
#endif #endif
static const char *src_orig; static const char *src_orig;
static const char *dst_orig; static const char *dst_orig;
@ -87,11 +86,15 @@ static int copy_file (const char *src, const char *dst,
*/ */
static int selinux_file_context (const char *dst_name) static int selinux_file_context (const char *dst_name)
{ {
static bool selinux_checked = false;
static bool selinux_enabled;
security_context_t scontext = NULL; security_context_t scontext = NULL;
if (selinux_enabled < 0) { if (!selinux_checked) {
selinux_enabled = is_selinux_enabled () > 0; selinux_enabled = is_selinux_enabled () > 0;
selinux_checked = true;
} }
if (selinux_enabled) { if (selinux_enabled) {
/* Get the default security context for this file */ /* Get the default security context for this file */
if (matchpathcon (dst_name, 0, &scontext) < 0) { if (matchpathcon (dst_name, 0, &scontext) < 0) {
@ -189,7 +192,7 @@ int copy_tree (const char *src_root, const char *dst_root,
char src_name[1024]; char src_name[1024];
char dst_name[1024]; char dst_name[1024];
int err = 0; int err = 0;
int set_orig = 0; bool set_orig = false;
struct DIRECT *ent; struct DIRECT *ent;
DIR *dir; DIR *dir;
@ -216,10 +219,10 @@ int copy_tree (const char *src_root, const char *dst_root,
return -1; return -1;
} }
if (src_orig == 0) { if (src_orig == NULL) {
src_orig = src_root; src_orig = src_root;
dst_orig = dst_root; dst_orig = dst_root;
set_orig++; set_orig = true;
} }
while ((0 == err) && (ent = readdir (dir)) != NULL) { while ((0 == err) && (ent = readdir (dir)) != NULL) {
/* /*
@ -253,8 +256,8 @@ int copy_tree (const char *src_root, const char *dst_root,
(void) closedir (dir); (void) closedir (dir);
if (set_orig) { if (set_orig) {
src_orig = 0; src_orig = NULL;
dst_orig = 0; dst_orig = NULL;
} }
return err; return err;
} }