static int fix_permissions( int fd, const char *filename, const char *target, const char *info[_INFO_LEN], uid_t uid) { assert(fd >= 0); assert(filename); assert(target); assert(info); /* Ignore errors on these */ fchmod(fd, 0640); fix_acl(fd, uid); fix_xattr(fd, info); if (fsync(fd) < 0) return log_error_errno(errno, "Failed to sync coredump %s: %m", filename); if (rename(filename, target) < 0) return log_error_errno(errno, "Failed to rename coredump %s -> %s: %m", filename, target); return 0; }
static int fix_permissions( int fd, const char *filename, const char *target, const char *context[_CONTEXT_MAX], uid_t uid) { int r; assert(fd >= 0); assert(target); assert(context); /* Ignore errors on these */ (void) fchmod(fd, 0640); (void) fix_acl(fd, uid); (void) fix_xattr(fd, context); if (fsync(fd) < 0) return log_error_errno(errno, "Failed to sync coredump %s: %m", coredump_tmpfile_name(filename)); r = link_tmpfile(fd, filename, target); if (r < 0) return log_error_errno(r, "Failed to move coredump %s into place: %m", target); return 0; }