Merge pull request #2781 from keszybz/selinux-and-warnings
Selinux loading fix and warning cleanups
This commit is contained in:
@@ -49,7 +49,7 @@
|
||||
#if SIZEOF_TIME_T == 8
|
||||
# define PRI_TIME PRIi64
|
||||
#elif SIZEOF_TIME_T == 4
|
||||
# define PRI_TIME PRIu32
|
||||
# define PRI_TIME "li"
|
||||
#else
|
||||
# error Unknown time_t size
|
||||
#endif
|
||||
|
||||
@@ -80,31 +80,23 @@ void mac_selinux_retest(void) {
|
||||
#endif
|
||||
}
|
||||
|
||||
int mac_selinux_init(const char *prefix) {
|
||||
int mac_selinux_init(void) {
|
||||
int r = 0;
|
||||
|
||||
#ifdef HAVE_SELINUX
|
||||
usec_t before_timestamp, after_timestamp;
|
||||
struct mallinfo before_mallinfo, after_mallinfo;
|
||||
|
||||
if (!mac_selinux_use())
|
||||
if (label_hnd)
|
||||
return 0;
|
||||
|
||||
if (label_hnd)
|
||||
if (!mac_selinux_use())
|
||||
return 0;
|
||||
|
||||
before_mallinfo = mallinfo();
|
||||
before_timestamp = now(CLOCK_MONOTONIC);
|
||||
|
||||
if (prefix) {
|
||||
struct selinux_opt options[] = {
|
||||
{ .type = SELABEL_OPT_SUBSET, .value = prefix },
|
||||
};
|
||||
|
||||
label_hnd = selabel_open(SELABEL_CTX_FILE, options, ELEMENTSOF(options));
|
||||
} else
|
||||
label_hnd = selabel_open(SELABEL_CTX_FILE, NULL, 0);
|
||||
|
||||
label_hnd = selabel_open(SELABEL_CTX_FILE, NULL, 0);
|
||||
if (!label_hnd) {
|
||||
log_enforcing("Failed to initialize SELinux context: %m");
|
||||
r = security_getenforce() == 1 ? -errno : 0;
|
||||
@@ -225,7 +217,7 @@ int mac_selinux_get_create_label_from_exe(const char *exe, char **label) {
|
||||
return -errno;
|
||||
|
||||
sclass = string_to_security_class("process");
|
||||
r = security_compute_create(mycon, fcon, sclass, (security_context_t *) label);
|
||||
r = security_compute_create_raw(mycon, fcon, sclass, (security_context_t *) label);
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
#endif
|
||||
@@ -304,7 +296,7 @@ int mac_selinux_get_child_mls_label(int socket_fd, const char *exe, const char *
|
||||
return -ENOMEM;
|
||||
|
||||
sclass = string_to_security_class("process");
|
||||
r = security_compute_create(mycon, fcon, sclass, (security_context_t *) label);
|
||||
r = security_compute_create_raw(mycon, fcon, sclass, (security_context_t *) label);
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
#endif
|
||||
@@ -358,7 +350,7 @@ int mac_selinux_create_file_prepare(const char *path, mode_t mode) {
|
||||
|
||||
log_enforcing("Failed to determine SELinux security context for %s: %m", path);
|
||||
} else {
|
||||
if (setfscreatecon(filecon) >= 0)
|
||||
if (setfscreatecon_raw(filecon) >= 0)
|
||||
return 0; /* Success! */
|
||||
|
||||
log_enforcing("Failed to set SELinux security context %s for %s: %m", filecon, path);
|
||||
|
||||
@@ -29,7 +29,7 @@ bool mac_selinux_use(void);
|
||||
bool mac_selinux_have(void);
|
||||
void mac_selinux_retest(void);
|
||||
|
||||
int mac_selinux_init(const char *prefix);
|
||||
int mac_selinux_init(void);
|
||||
void mac_selinux_finish(void);
|
||||
|
||||
int mac_selinux_fix(const char *path, bool ignore_enoent, bool ignore_erofs);
|
||||
|
||||
Reference in New Issue
Block a user