From: Lennart Poettering Date: Thu, 19 Jun 2014 10:13:09 +0000 (+0200) Subject: coredump: simplify how we apply extended attributes to coredumps X-Git-Tag: v215~332 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=0cd77f9783f8e64cd77cd2640f9ffa343cdc567e;hp=8d4e028f1868c47864ec873d9f30c3ee961a8849 coredump: simplify how we apply extended attributes to coredumps --- 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; }