#include "sd-journal.h"
#include "util.h"
#include "socket-util.h"
+#include "memfd-util.h"
#define SNDBUF_SIZE (8*1024*1024)
* here, since we want this to be a tmpfs, and one that is
* available from early boot on and where unprivileged users
* can create files. */
- buffer_fd = memfd_create("journal-message", MFD_ALLOW_SEALING | MFD_CLOEXEC);
+ buffer_fd = memfd_new(NULL);
if (buffer_fd < 0) {
- if (errno == ENOSYS) {
+ if (buffer_fd == -ENOSYS) {
buffer_fd = open_tmpfile("/dev/shm", O_RDWR | O_CLOEXEC);
if (buffer_fd < 0)
return buffer_fd;
seal = false;
} else
- return -errno;
+ return buffer_fd;
}
n = writev(buffer_fd, w, j);
return -errno;
if (seal) {
- r = fcntl(buffer_fd, F_ADD_SEALS, F_SEAL_SHRINK | F_SEAL_GROW | F_SEAL_WRITE | F_SEAL_SEAL);
+ r = memfd_set_sealed(buffer_fd);
if (r < 0)
- return -errno;
+ return r;
}
mh.msg_iov = NULL;
memcpy(buffer + 8 + k - 2, ": ", 2);
}
- snprintf(error, sizeof(error), "ERRNO=%u", _saved_errno_);
+ snprintf(error, sizeof(error), "ERRNO=%i", _saved_errno_);
char_array_0(error);
IOVEC_SET_STRING(iov[skip+0], "PRIORITY=3");
header[l++] = '0';
header[l++] = '\n';
- r = (int) loop_write(fd, header, l, false);
+ r = loop_write(fd, header, l, false);
if (r < 0)
return r;
- if ((size_t) r != l)
- return -errno;
-
r = fd;
fd = -1;
return r;