summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFrantisek Sumsal <frantisek@sumsal.cz>2019-07-16 18:46:30 +0000
committerGitHub <noreply@github.com>2019-07-16 18:46:30 +0000
commit64c3b40c2537a02fb5d70ef886a21569f091f46d (patch)
treef5bf4de41315bcd0eb2c7ac9e1119f4500ef1828 /src
parent3151b668c23b23d185cac5420b7abf8f5297d678 (diff)
parent4094c4bfb770f5e3045cc6da88b9b8de74aa027d (diff)
downloadsystemd-64c3b40c2537a02fb5d70ef886a21569f091f46d.tar.gz
Merge pull request #13077 from poettering/activate-n-fds
activate: move array allocation to heap
Diffstat (limited to 'src')
-rw-r--r--src/activate/activate.c16
-rw-r--r--src/journal/compress.c7
2 files changed, 14 insertions, 9 deletions
diff --git a/src/activate/activate.c b/src/activate/activate.c
index 15a3150666..2fe312f5a0 100644
--- a/src/activate/activate.c
+++ b/src/activate/activate.c
@@ -49,8 +49,7 @@ static int add_epoll(int epoll_fd, int fd) {
static int open_sockets(int *epoll_fd, bool accept) {
char **address;
- int n, fd, r;
- int count = 0;
+ int n, fd, r, count = 0;
n = sd_listen_fds(true);
if (n < 0)
@@ -69,13 +68,18 @@ static int open_sockets(int *epoll_fd, bool accept) {
/* Close logging and all other descriptors */
if (arg_listen) {
- int except[3 + n];
+ _cleanup_free_ int *except = NULL;
+ int i;
- for (fd = 0; fd < SD_LISTEN_FDS_START + n; fd++)
- except[fd] = fd;
+ except = new(int, n);
+ if (!except)
+ return log_oom();
+
+ for (i = 0; i < n; i++)
+ except[i] = SD_LISTEN_FDS_START + i;
log_close();
- r = close_all_fds(except, 3 + n);
+ r = close_all_fds(except, n);
if (r < 0)
return log_error_errno(r, "Failed to close all file descriptors: %m");
}
diff --git a/src/journal/compress.c b/src/journal/compress.c
index 7a79e566b8..bfb75ae8c9 100644
--- a/src/journal/compress.c
+++ b/src/journal/compress.c
@@ -26,6 +26,7 @@
#include "sparse-endian.h"
#include "string-table.h"
#include "string-util.h"
+#include "unaligned.h"
#include "util.h"
#if HAVE_LZ4
@@ -101,7 +102,7 @@ int compress_blob_lz4(const void *src, uint64_t src_size,
if (r <= 0)
return -ENOBUFS;
- *(le64_t*) dst = htole64(src_size);
+ unaligned_write_le64(dst, src_size);
*dst_size = r + 8;
return 0;
@@ -187,8 +188,8 @@ int decompress_blob_lz4(const void *src, uint64_t src_size,
if (src_size <= 8)
return -EBADMSG;
- size = le64toh( *(le64_t*)src );
- if (size < 0 || (unsigned) size != le64toh(*(le64_t*)src))
+ size = unaligned_read_le64(src);
+ if (size < 0 || (unsigned) size != unaligned_read_le64(src))
return -EFBIG;
if ((size_t) size > *dst_alloc_size) {
out = realloc(*dst, size);