| From cef23a651ea200e30e1e6ed2a2564505e3a42d46 Mon Sep 17 00:00:00 2001 |
| From: Chen Qi <Qi.Chen@windriver.com> |
| Date: Mon, 25 Feb 2019 14:18:21 +0800 |
| Subject: [PATCH] src/basic/missing.h: check for missing strndupa |
| |
| include missing.h for definition of strndupa |
| |
| Upstream-Status: Inappropriate [musl specific] |
| |
| Signed-off-by: Khem Raj <raj.khem@gmail.com> |
| Signed-off-by: Chen Qi <Qi.Chen@windriver.com> |
| [Rebased for v242] |
| Signed-off-by: Andrej Valek <andrej.valek@siemens.com> |
| [rebased for systemd 243] |
| Signed-off-by: Scott Murray <scott.murray@konsulko.com> |
| Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com> |
| [rebased for systemd 244] |
| [Rebased for v247] |
| Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> |
| |
| --- |
| meson.build | 1 + |
| src/backlight/backlight.c | 1 + |
| src/basic/cgroup-util.c | 1 + |
| src/basic/env-util.c | 1 + |
| src/basic/log.c | 1 + |
| src/basic/missing_stdlib.h | 12 ++++++++++++ |
| src/basic/mkdir.c | 1 + |
| src/basic/mountpoint-util.c | 1 + |
| src/basic/parse-util.c | 1 + |
| src/basic/path-lookup.c | 1 + |
| src/basic/percent-util.c | 1 + |
| src/basic/proc-cmdline.c | 1 + |
| src/basic/procfs-util.c | 1 + |
| src/basic/time-util.c | 1 + |
| src/boot/bless-boot.c | 1 + |
| src/core/dbus-cgroup.c | 1 + |
| src/core/dbus-execute.c | 1 + |
| src/core/dbus-util.c | 1 + |
| src/core/execute.c | 1 + |
| src/core/kmod-setup.c | 1 + |
| src/core/service.c | 1 + |
| src/coredump/coredump-vacuum.c | 1 + |
| src/journal-remote/journal-remote-main.c | 1 + |
| src/journal/journalctl.c | 1 + |
| src/libsystemd/sd-bus/bus-message.c | 1 + |
| src/libsystemd/sd-bus/bus-objects.c | 1 + |
| src/libsystemd/sd-bus/bus-socket.c | 1 + |
| src/libsystemd/sd-bus/sd-bus.c | 1 + |
| src/libsystemd/sd-bus/test-bus-benchmark.c | 1 + |
| src/libsystemd/sd-journal/sd-journal.c | 1 + |
| src/locale/keymap-util.c | 1 + |
| src/login/pam_systemd.c | 1 + |
| src/network/generator/network-generator.c | 1 + |
| src/nspawn/nspawn-settings.c | 1 + |
| src/nss-mymachines/nss-mymachines.c | 1 + |
| src/portable/portable.c | 1 + |
| src/resolve/resolvectl.c | 1 + |
| src/shared/bus-get-properties.c | 1 + |
| src/shared/bus-unit-procs.c | 1 + |
| src/shared/bus-unit-util.c | 1 + |
| src/shared/bus-util.c | 1 + |
| src/shared/dns-domain.c | 1 + |
| src/shared/journal-importer.c | 1 + |
| src/shared/logs-show.c | 1 + |
| src/shared/pager.c | 1 + |
| src/shared/uid-range.c | 1 + |
| src/socket-proxy/socket-proxyd.c | 1 + |
| src/test/test-hexdecoct.c | 1 + |
| src/udev/udev-builtin-path_id.c | 1 + |
| src/udev/udev-event.c | 1 + |
| src/udev/udev-rules.c | 1 + |
| 51 files changed, 62 insertions(+) |
| |
| --- a/meson.build |
| +++ b/meson.build |
| @@ -507,6 +507,7 @@ foreach ident : ['secure_getenv', '__sec |
| endforeach |
| |
| foreach ident : [ |
| + ['strndupa' , '''#include <string.h>'''], |
| ['memfd_create', '''#include <sys/mman.h>'''], |
| ['gettid', '''#include <sys/types.h> |
| #include <unistd.h>'''], |
| --- a/src/backlight/backlight.c |
| +++ b/src/backlight/backlight.c |
| @@ -19,6 +19,7 @@ |
| #include "string-util.h" |
| #include "strv.h" |
| #include "util.h" |
| +#include "missing_stdlib.h" |
| |
| static int help(void) { |
| _cleanup_free_ char *link = NULL; |
| --- a/src/basic/cgroup-util.c |
| +++ b/src/basic/cgroup-util.c |
| @@ -37,6 +37,7 @@ |
| #include "unit-name.h" |
| #include "user-util.h" |
| #include "xattr-util.h" |
| +#include "missing_stdlib.h" |
| |
| static int cg_enumerate_items(const char *controller, const char *path, FILE **_f, const char *item) { |
| _cleanup_free_ char *fs = NULL; |
| --- a/src/basic/env-util.c |
| +++ b/src/basic/env-util.c |
| @@ -19,6 +19,7 @@ |
| #include "string-util.h" |
| #include "strv.h" |
| #include "utf8.h" |
| +#include "missing_stdlib.h" |
| |
| /* We follow bash for the character set. Different shells have different rules. */ |
| #define VALID_BASH_ENV_NAME_CHARS \ |
| --- a/src/basic/log.c |
| +++ b/src/basic/log.c |
| @@ -36,6 +36,7 @@ |
| #include "terminal-util.h" |
| #include "time-util.h" |
| #include "utf8.h" |
| +#include "missing_stdlib.h" |
| |
| #define SNDBUF_SIZE (8*1024*1024) |
| |
| --- a/src/basic/missing_stdlib.h |
| +++ b/src/basic/missing_stdlib.h |
| @@ -11,3 +11,15 @@ |
| # error "neither secure_getenv nor __secure_getenv are available" |
| # endif |
| #endif |
| + |
| +/* string.h */ |
| +#if ! HAVE_STRNDUPA |
| +#define strndupa(s, n) \ |
| + ({ \ |
| + const char *__old = (s); \ |
| + size_t __len = strnlen(__old, (n)); \ |
| + char *__new = (char *)alloca(__len + 1); \ |
| + __new[__len] = '\0'; \ |
| + (char *)memcpy(__new, __old, __len); \ |
| + }) |
| +#endif |
| --- a/src/basic/mkdir.c |
| +++ b/src/basic/mkdir.c |
| @@ -15,6 +15,7 @@ |
| #include "stat-util.h" |
| #include "stdio-util.h" |
| #include "user-util.h" |
| +#include "missing_stdlib.h" |
| |
| int mkdir_safe_internal( |
| const char *path, |
| --- a/src/basic/mountpoint-util.c |
| +++ b/src/basic/mountpoint-util.c |
| @@ -13,6 +13,7 @@ |
| #include "missing_stat.h" |
| #include "missing_syscall.h" |
| #include "mkdir.h" |
| +#include "missing_stdlib.h" |
| #include "mountpoint-util.h" |
| #include "nulstr-util.h" |
| #include "parse-util.h" |
| --- a/src/basic/parse-util.c |
| +++ b/src/basic/parse-util.c |
| @@ -18,6 +18,7 @@ |
| #include "stat-util.h" |
| #include "string-util.h" |
| #include "strv.h" |
| +#include "missing_stdlib.h" |
| |
| int parse_boolean(const char *v) { |
| if (!v) |
| --- a/src/basic/path-lookup.c |
| +++ b/src/basic/path-lookup.c |
| @@ -16,6 +16,7 @@ |
| #include "strv.h" |
| #include "tmpfile-util.h" |
| #include "user-util.h" |
| +#include "missing_stdlib.h" |
| |
| int xdg_user_runtime_dir(char **ret, const char *suffix) { |
| const char *e; |
| --- a/src/basic/percent-util.c |
| +++ b/src/basic/percent-util.c |
| @@ -3,6 +3,7 @@ |
| #include "percent-util.h" |
| #include "string-util.h" |
| #include "parse-util.h" |
| +#include "missing_stdlib.h" |
| |
| static int parse_parts_value_whole(const char *p, const char *symbol) { |
| const char *pc, *n; |
| --- a/src/basic/proc-cmdline.c |
| +++ b/src/basic/proc-cmdline.c |
| @@ -15,6 +15,7 @@ |
| #include "string-util.h" |
| #include "util.h" |
| #include "virt.h" |
| +#include "missing_stdlib.h" |
| |
| int proc_cmdline(char **ret) { |
| const char *e; |
| --- a/src/basic/procfs-util.c |
| +++ b/src/basic/procfs-util.c |
| @@ -12,6 +12,7 @@ |
| #include "procfs-util.h" |
| #include "stdio-util.h" |
| #include "string-util.h" |
| +#include "missing_stdlib.h" |
| |
| int procfs_get_pid_max(uint64_t *ret) { |
| _cleanup_free_ char *value = NULL; |
| --- a/src/basic/time-util.c |
| +++ b/src/basic/time-util.c |
| @@ -26,6 +26,7 @@ |
| #include "string-util.h" |
| #include "strv.h" |
| #include "time-util.h" |
| +#include "missing_stdlib.h" |
| |
| static clockid_t map_clock_id(clockid_t c) { |
| |
| --- a/src/boot/bless-boot.c |
| +++ b/src/boot/bless-boot.c |
| @@ -19,6 +19,7 @@ |
| #include "util.h" |
| #include "verbs.h" |
| #include "virt.h" |
| +#include "missing_stdlib.h" |
| |
| static char **arg_path = NULL; |
| |
| --- a/src/core/dbus-execute.c |
| +++ b/src/core/dbus-execute.c |
| @@ -44,6 +44,7 @@ |
| #include "unit-printf.h" |
| #include "user-util.h" |
| #include "utf8.h" |
| +#include "missing_stdlib.h" |
| |
| BUS_DEFINE_PROPERTY_GET_ENUM(bus_property_get_exec_output, exec_output, ExecOutput); |
| static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_exec_input, exec_input, ExecInput); |
| --- a/src/core/dbus-util.c |
| +++ b/src/core/dbus-util.c |
| @@ -9,6 +9,7 @@ |
| #include "unit-printf.h" |
| #include "user-util.h" |
| #include "unit.h" |
| +#include "missing_stdlib.h" |
| |
| int bus_property_get_triggered_unit( |
| sd_bus *bus, |
| --- a/src/core/execute.c |
| +++ b/src/core/execute.c |
| @@ -102,6 +102,7 @@ |
| #include "unit-serialize.h" |
| #include "user-util.h" |
| #include "utmp-wtmp.h" |
| +#include "missing_stdlib.h" |
| |
| #define IDLE_TIMEOUT_USEC (5*USEC_PER_SEC) |
| #define IDLE_TIMEOUT2_USEC (1*USEC_PER_SEC) |
| --- a/src/core/kmod-setup.c |
| +++ b/src/core/kmod-setup.c |
| @@ -11,6 +11,7 @@ |
| #include "recurse-dir.h" |
| #include "string-util.h" |
| #include "missing_type.h" |
| +#include "missing_stdlib.h" |
| |
| #if HAVE_KMOD |
| #include "module-util.h" |
| --- a/src/core/service.c |
| +++ b/src/core/service.c |
| @@ -42,6 +42,7 @@ |
| #include "unit.h" |
| #include "utf8.h" |
| #include "util.h" |
| +#include "missing_stdlib.h" |
| |
| static const UnitActiveState state_translation_table[_SERVICE_STATE_MAX] = { |
| [SERVICE_DEAD] = UNIT_INACTIVE, |
| --- a/src/coredump/coredump-vacuum.c |
| +++ b/src/coredump/coredump-vacuum.c |
| @@ -16,6 +16,7 @@ |
| #include "string-util.h" |
| #include "time-util.h" |
| #include "user-util.h" |
| +#include "missing_stdlib.h" |
| |
| #define DEFAULT_MAX_USE_LOWER (uint64_t) (1ULL*1024ULL*1024ULL) /* 1 MiB */ |
| #define DEFAULT_MAX_USE_UPPER (uint64_t) (4ULL*1024ULL*1024ULL*1024ULL) /* 4 GiB */ |
| --- a/src/journal-remote/journal-remote-main.c |
| +++ b/src/journal-remote/journal-remote-main.c |
| @@ -24,6 +24,7 @@ |
| #include "stat-util.h" |
| #include "string-table.h" |
| #include "strv.h" |
| +#include "missing_stdlib.h" |
| |
| #define PRIV_KEY_FILE CERTIFICATE_ROOT "/private/journal-remote.pem" |
| #define CERT_FILE CERTIFICATE_ROOT "/certs/journal-remote.pem" |
| --- a/src/journal/journalctl.c |
| +++ b/src/journal/journalctl.c |
| @@ -73,6 +73,7 @@ |
| #include "unit-name.h" |
| #include "user-util.h" |
| #include "varlink.h" |
| +#include "missing_stdlib.h" |
| |
| #define DEFAULT_FSS_INTERVAL_USEC (15*USEC_PER_MINUTE) |
| #define PROCESS_INOTIFY_INTERVAL 1024 /* Every 1,024 messages processed */ |
| --- a/src/libsystemd/sd-bus/bus-message.c |
| +++ b/src/libsystemd/sd-bus/bus-message.c |
| @@ -20,6 +20,7 @@ |
| #include "strv.h" |
| #include "time-util.h" |
| #include "utf8.h" |
| +#include "missing_stdlib.h" |
| |
| static int message_append_basic(sd_bus_message *m, char type, const void *p, const void **stored); |
| |
| --- a/src/libsystemd/sd-bus/bus-objects.c |
| +++ b/src/libsystemd/sd-bus/bus-objects.c |
| @@ -11,6 +11,7 @@ |
| #include "missing_capability.h" |
| #include "string-util.h" |
| #include "strv.h" |
| +#include "missing_stdlib.h" |
| |
| static int node_vtable_get_userdata( |
| sd_bus *bus, |
| --- a/src/libsystemd/sd-bus/bus-socket.c |
| +++ b/src/libsystemd/sd-bus/bus-socket.c |
| @@ -28,6 +28,7 @@ |
| #include "string-util.h" |
| #include "user-util.h" |
| #include "utf8.h" |
| +#include "missing_stdlib.h" |
| |
| #define SNDBUF_SIZE (8*1024*1024) |
| |
| --- a/src/libsystemd/sd-bus/sd-bus.c |
| +++ b/src/libsystemd/sd-bus/sd-bus.c |
| @@ -43,6 +43,7 @@ |
| #include "string-util.h" |
| #include "strv.h" |
| #include "user-util.h" |
| +#include "missing_stdlib.h" |
| |
| #define log_debug_bus_message(m) \ |
| do { \ |
| --- a/src/libsystemd/sd-bus/test-bus-benchmark.c |
| +++ b/src/libsystemd/sd-bus/test-bus-benchmark.c |
| @@ -14,6 +14,7 @@ |
| #include "string-util.h" |
| #include "time-util.h" |
| #include "util.h" |
| +#include "missing_stdlib.h" |
| |
| #define MAX_SIZE (2*1024*1024) |
| |
| --- a/src/libsystemd/sd-journal/sd-journal.c |
| +++ b/src/libsystemd/sd-journal/sd-journal.c |
| @@ -41,6 +41,7 @@ |
| #include "string-util.h" |
| #include "strv.h" |
| #include "syslog-util.h" |
| +#include "missing_stdlib.h" |
| |
| #define JOURNAL_FILES_MAX 7168 |
| |
| --- a/src/locale/keymap-util.c |
| +++ b/src/locale/keymap-util.c |
| @@ -24,6 +24,7 @@ |
| #include "string-util.h" |
| #include "strv.h" |
| #include "tmpfile-util.h" |
| +#include "missing_stdlib.h" |
| |
| static bool startswith_comma(const char *s, const char *prefix) { |
| s = startswith(s, prefix); |
| --- a/src/login/pam_systemd.c |
| +++ b/src/login/pam_systemd.c |
| @@ -31,6 +31,7 @@ |
| #include "locale-util.h" |
| #include "login-util.h" |
| #include "macro.h" |
| +#include "missing_stdlib.h" |
| #include "pam-util.h" |
| #include "parse-util.h" |
| #include "path-util.h" |
| --- a/src/network/generator/network-generator.c |
| +++ b/src/network/generator/network-generator.c |
| @@ -13,6 +13,7 @@ |
| #include "string-table.h" |
| #include "string-util.h" |
| #include "strv.h" |
| +#include "missing_stdlib.h" |
| |
| /* |
| # .network |
| --- a/src/nspawn/nspawn-settings.c |
| +++ b/src/nspawn/nspawn-settings.c |
| @@ -17,6 +17,7 @@ |
| #include "strv.h" |
| #include "user-util.h" |
| #include "util.h" |
| +#include "missing_stdlib.h" |
| |
| Settings *settings_new(void) { |
| Settings *s; |
| --- a/src/nss-mymachines/nss-mymachines.c |
| +++ b/src/nss-mymachines/nss-mymachines.c |
| @@ -21,6 +21,7 @@ |
| #include "nss-util.h" |
| #include "signal-util.h" |
| #include "string-util.h" |
| +#include "missing_stdlib.h" |
| |
| static void setup_logging_once(void) { |
| static pthread_once_t once = PTHREAD_ONCE_INIT; |
| --- a/src/portable/portable.c |
| +++ b/src/portable/portable.c |
| @@ -39,6 +39,7 @@ |
| #include "strv.h" |
| #include "tmpfile-util.h" |
| #include "user-util.h" |
| +#include "missing_stdlib.h" |
| |
| /* Markers used in the first line of our 20-portable.conf unit file drop-in to determine, that a) the unit file was |
| * dropped there by the portable service logic and b) for which image it was dropped there. */ |
| --- a/src/resolve/resolvectl.c |
| +++ b/src/resolve/resolvectl.c |
| @@ -43,6 +43,7 @@ |
| #include "utf8.h" |
| #include "verb-log-control.h" |
| #include "verbs.h" |
| +#include "missing_stdlib.h" |
| |
| static int arg_family = AF_UNSPEC; |
| static int arg_ifindex = 0; |
| --- a/src/shared/bus-get-properties.c |
| +++ b/src/shared/bus-get-properties.c |
| @@ -4,6 +4,7 @@ |
| #include "rlimit-util.h" |
| #include "stdio-util.h" |
| #include "string-util.h" |
| +#include "missing_stdlib.h" |
| |
| int bus_property_get_bool( |
| sd_bus *bus, |
| --- a/src/shared/bus-unit-procs.c |
| +++ b/src/shared/bus-unit-procs.c |
| @@ -10,6 +10,7 @@ |
| #include "sort-util.h" |
| #include "string-util.h" |
| #include "terminal-util.h" |
| +#include "missing_stdlib.h" |
| |
| struct CGroupInfo { |
| char *cgroup_path; |
| --- a/src/shared/bus-unit-util.c |
| +++ b/src/shared/bus-unit-util.c |
| @@ -49,6 +49,7 @@ |
| #include "unit-def.h" |
| #include "user-util.h" |
| #include "utf8.h" |
| +#include "missing_stdlib.h" |
| |
| int bus_parse_unit_info(sd_bus_message *message, UnitInfo *u) { |
| assert(message); |
| --- a/src/shared/bus-util.c |
| +++ b/src/shared/bus-util.c |
| @@ -21,6 +21,7 @@ |
| #include "path-util.h" |
| #include "socket-util.h" |
| #include "stdio-util.h" |
| +#include "missing_stdlib.h" |
| |
| static int name_owner_change_callback(sd_bus_message *m, void *userdata, sd_bus_error *ret_error) { |
| sd_event *e = userdata; |
| --- a/src/shared/dns-domain.c |
| +++ b/src/shared/dns-domain.c |
| @@ -17,6 +17,7 @@ |
| #include "string-util.h" |
| #include "strv.h" |
| #include "utf8.h" |
| +#include "missing_stdlib.h" |
| |
| int dns_label_unescape(const char **name, char *dest, size_t sz, DNSLabelFlags flags) { |
| const char *n; |
| --- a/src/shared/journal-importer.c |
| +++ b/src/shared/journal-importer.c |
| @@ -15,6 +15,7 @@ |
| #include "parse-util.h" |
| #include "string-util.h" |
| #include "unaligned.h" |
| +#include "missing_stdlib.h" |
| |
| enum { |
| IMPORTER_STATE_LINE = 0, /* waiting to read, or reading line */ |
| --- a/src/shared/logs-show.c |
| +++ b/src/shared/logs-show.c |
| @@ -42,6 +42,7 @@ |
| #include "utf8.h" |
| #include "util.h" |
| #include "web-util.h" |
| +#include "missing_stdlib.h" |
| |
| /* up to three lines (each up to 100 characters) or 300 characters, whichever is less */ |
| #define PRINT_LINE_THRESHOLD 3 |
| --- a/src/shared/pager.c |
| +++ b/src/shared/pager.c |
| @@ -26,6 +26,7 @@ |
| #include "strv.h" |
| #include "terminal-util.h" |
| #include "util.h" |
| +#include "missing_stdlib.h" |
| |
| static pid_t pager_pid = 0; |
| |
| --- a/src/shared/uid-range.c |
| +++ b/src/shared/uid-range.c |
| @@ -9,6 +9,7 @@ |
| #include "sort-util.h" |
| #include "uid-range.h" |
| #include "user-util.h" |
| +#include "missing_stdlib.h" |
| |
| static bool uid_range_intersect(UidRange *range, uid_t start, uid_t nr) { |
| assert(range); |
| --- a/src/socket-proxy/socket-proxyd.c |
| +++ b/src/socket-proxy/socket-proxyd.c |
| @@ -26,6 +26,7 @@ |
| #include "socket-util.h" |
| #include "string-util.h" |
| #include "util.h" |
| +#include "missing_stdlib.h" |
| |
| #define BUFFER_SIZE (256 * 1024) |
| |
| --- a/src/test/test-hexdecoct.c |
| +++ b/src/test/test-hexdecoct.c |
| @@ -7,6 +7,7 @@ |
| #include "macro.h" |
| #include "random-util.h" |
| #include "string-util.h" |
| +#include "missing_stdlib.h" |
| #include "tests.h" |
| |
| TEST(hexchar) { |
| --- a/src/udev/udev-builtin-path_id.c |
| +++ b/src/udev/udev-builtin-path_id.c |
| @@ -22,6 +22,7 @@ |
| #include "sysexits.h" |
| #include "udev-builtin.h" |
| #include "udev-util.h" |
| +#include "missing_stdlib.h" |
| |
| _printf_(2,3) |
| static void path_prepend(char **path, const char *fmt, ...) { |
| --- a/src/udev/udev-event.c |
| +++ b/src/udev/udev-event.c |
| @@ -35,6 +35,7 @@ |
| #include "udev-util.h" |
| #include "udev-watch.h" |
| #include "user-util.h" |
| +#include "missing_stdlib.h" |
| |
| typedef struct Spawn { |
| sd_device *device; |
| --- a/src/udev/udev-rules.c |
| +++ b/src/udev/udev-rules.c |
| @@ -34,6 +34,7 @@ |
| #include "udev-util.h" |
| #include "user-util.h" |
| #include "virt.h" |
| +#include "missing_stdlib.h" |
| |
| #define RULES_DIRS (const char* const*) CONF_PATHS_STRV("udev/rules.d") |
| |
| --- a/src/core/dbus-cgroup.c |
| +++ b/src/core/dbus-cgroup.c |
| @@ -21,6 +21,7 @@ |
| #include "parse-util.h" |
| #include "path-util.h" |
| #include "percent-util.h" |
| +#include "missing_stdlib.h" |
| #include "socket-util.h" |
| |
| BUS_DEFINE_PROPERTY_GET(bus_property_get_tasks_max, "t", TasksMax, tasks_max_resolve); |
| --- a/src/fstab-generator/fstab-generator.c |
| +++ b/src/fstab-generator/fstab-generator.c |
| @@ -29,6 +29,7 @@ |
| #include "util.h" |
| #include "virt.h" |
| #include "volatile-util.h" |
| +#include "missing_stdlib.h" |
| |
| typedef enum MountPointFlags { |
| MOUNT_NOAUTO = 1 << 0, |