smack: minimize ifdef use, and move all labeling to smack-util.c

This commit is contained in:
Kay Sievers
2013-10-11 10:16:41 +02:00
parent adcdb37476
commit 9a4e038c15
4 changed files with 69 additions and 31 deletions
+51 -1
View File
@@ -22,11 +22,14 @@
***/
#include <unistd.h>
#include <string.h>
#ifdef HAVE_XATTR
#include <attr/xattr.h>
#endif
#include "smack-util.h"
bool use_smack(void) {
#ifdef HAVE_SMACK
static int use_smack_cached = -1;
@@ -39,3 +42,50 @@ bool use_smack(void) {
#endif
}
int smack_label_path(const char *path, const char *label) {
#ifdef HAVE_SMACK
if (!use_smack())
return 0;
if (label)
return setxattr(path, "security.SMACK64", label, strlen(label), 0);
else
return lremovexattr(path, "security.SMACK64");
#else
return 0;
#endif
}
int smack_label_fd(int fd, const char *label) {
#ifdef HAVE_SMACK
if (!use_smack())
return 0;
return fsetxattr(fd, "security.SMACK64", label, strlen(label), 0);
#else
return 0;
#endif
}
int smack_label_ip_out_fd(int fd, const char *label) {
#ifdef HAVE_SMACK
if (!use_smack())
return 0;
return fsetxattr(fd, "security.SMACK64IPOUT", label, strlen(label), 0);
#else
return 0;
#endif
}
int smack_label_ip_in_fd(int fd, const char *label) {
#ifdef HAVE_SMACK
if (!use_smack())
return 0;
return fsetxattr(fd, "security.SMACK64IPIN", label, strlen(label), 0);
#else
return 0;
#endif
}
+4
View File
@@ -26,3 +26,7 @@
#include <stdbool.h>
bool use_smack(void);
int smack_label_path(const char *path, const char *label);
int smack_label_fd(int fd, const char *label);
int smack_label_ip_in_fd(int fd, const char *label);
int smack_label_ip_out_fd(int fd, const char *label);