diff options
author | Frantisek Sumsal <frantisek@sumsal.cz> | 2019-07-16 18:46:30 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-16 18:46:30 +0000 |
commit | 64c3b40c2537a02fb5d70ef886a21569f091f46d (patch) | |
tree | f5bf4de41315bcd0eb2c7ac9e1119f4500ef1828 /src | |
parent | 3151b668c23b23d185cac5420b7abf8f5297d678 (diff) | |
parent | 4094c4bfb770f5e3045cc6da88b9b8de74aa027d (diff) | |
download | systemd-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.c | 16 | ||||
-rw-r--r-- | src/journal/compress.c | 7 |
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); |