From 0cd77f9783f8e64cd77cd2640f9ffa343cdc567e Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 19 Jun 2014 12:13:09 +0200 Subject: [PATCH 1/1] coredump: simplify how we apply extended attributes to coredumps --- src/journal/coredump.c | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/src/journal/coredump.c b/src/journal/coredump.c index f48f4e2c8..0a141c904 100644 --- a/src/journal/coredump.c +++ b/src/journal/coredump.c @@ -159,34 +159,29 @@ static int fix_acl(int fd, uid_t uid) { } static int fix_xattr(int fd, char *argv[]) { + + static const char * const xattrs[_ARG_MAX] = { + [ARG_PID] = "user.coredump.pid", + [ARG_UID] = "user.coredump.uid", + [ARG_GID] = "user.coredump.gid", + [ARG_SIGNAL] = "user.coredump.signal", + [ARG_TIMESTAMP] = "user.coredump.timestamp", + [ARG_COMM] = "user.coredump.comm", + }; + int r = 0; + unsigned i; /* Attach some metadate to coredumps via extended * attributes. Just because we can. */ - if (!isempty(argv[ARG_PID])) - if (fsetxattr(fd, "user.coredump.pid", argv[ARG_PID], strlen(argv[ARG_PID]), XATTR_CREATE) < 0) - r = -errno; + for (i = 0; i < _ARG_MAX; i++) { + if (isempty(argv[i])) + continue; - if (!isempty(argv[ARG_UID])) - if (fsetxattr(fd, "user.coredump.uid", argv[ARG_UID], strlen(argv[ARG_UID]), XATTR_CREATE) < 0) - r = -errno; - - if (!isempty(argv[ARG_GID])) - if (fsetxattr(fd, "user.coredump.gid", argv[ARG_GID], strlen(argv[ARG_GID]), XATTR_CREATE) < 0) - r = -errno; - - if (!isempty(argv[ARG_SIGNAL])) - if (fsetxattr(fd, "user.coredump.signal", argv[ARG_SIGNAL], strlen(argv[ARG_SIGNAL]), XATTR_CREATE) < 0) - r = -errno; - - if (!isempty(argv[ARG_TIMESTAMP])) - if (fsetxattr(fd, "user.coredump.timestamp", argv[ARG_TIMESTAMP], strlen(argv[ARG_TIMESTAMP]), XATTR_CREATE) < 0) - r = -errno; - - if (!isempty(argv[ARG_COMM])) - if (fsetxattr(fd, "user.coredump.comm", argv[ARG_COMM], strlen(argv[ARG_COMM]), XATTR_CREATE) < 0) + if (fsetxattr(fd, xattrs[i], argv[i], strlen(argv[i]), XATTR_CREATE) < 0) r = -errno; + } return r; } -- 2.30.2