From 82b1f317c8fbf9b81cb68a2c9be8ff36260f8ebc Mon Sep 17 00:00:00 2001 From: Christian Brauner Date: Thu, 24 Nov 2016 07:58:01 +0100 Subject: [PATCH] attach: simplify lsm_openat() Signed-off-by: Christian Brauner --- src/lxc/attach.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/lxc/attach.c b/src/lxc/attach.c index 2f095b408..5e89e7d38 100644 --- a/src/lxc/attach.c +++ b/src/lxc/attach.c @@ -85,12 +85,13 @@ lxc_log_define(lxc_attach, lxc); +/* /proc/pid-to-str/current\0 = (5 + 21 + 7 + 1) */ +#define __LSMATTRLEN (5 + 21 + 7 + 1) static int lsm_openat(int procfd, pid_t pid, int on_exec) { int ret = -1; int labelfd = -1; - const char* name; -#define __LSMATTRLEN /* /proc */ (5 + /* /pid-to-str */ 21 + /* /current */ 7 + /* \0 */ 1) + const char *name; char path[__LSMATTRLEN]; name = lsm_name(); @@ -105,20 +106,16 @@ static int lsm_openat(int procfd, pid_t pid, int on_exec) if (strcmp(name, "AppArmor") == 0) on_exec = 0; - if (on_exec) { + if (on_exec) ret = snprintf(path, __LSMATTRLEN, "%d/attr/exec", pid); - if (ret < 0 || ret >= __LSMATTRLEN) - return -1; - labelfd = openat(procfd, path, O_RDWR); - } else { + else ret = snprintf(path, __LSMATTRLEN, "%d/attr/current", pid); - if (ret < 0 || ret >= __LSMATTRLEN) - return -1; - labelfd = openat(procfd, path, O_RDWR); - } + if (ret < 0 || ret >= __LSMATTRLEN) + return -1; + labelfd = openat(procfd, path, O_RDWR); if (labelfd < 0) { - SYSERROR("Unable to open LSM label"); + SYSERROR("Unable to open file descriptor to set LSM label."); return -1; }