1From 87f1d38f40c5fe9cadf2b2de442473e4e5605788 Mon Sep 17 00:00:00 2001 2From: Chen Qi <Qi.Chen@windriver.com> 3Date: Mon, 25 Feb 2019 14:18:21 +0800 4Subject: [PATCH 03/22] src/basic/missing.h: check for missing strndupa 5 6include missing.h for definition of strndupa 7 8Upstream-Status: Inappropriate [musl specific] 9 10Signed-off-by: Khem Raj <raj.khem@gmail.com> 11Signed-off-by: Chen Qi <Qi.Chen@windriver.com> 12[Rebased for v242] 13Signed-off-by: Andrej Valek <andrej.valek@siemens.com> 14[rebased for systemd 243] 15Signed-off-by: Scott Murray <scott.murray@konsulko.com> 16Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com> 17[rebased for systemd 244] 18[Rebased for v247] 19Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> 20[Rebased for v254] 21Signed-off-by: Chen Qi <Qi.Chen@windriver.com> 22[Rebased for v255.1] 23--- 24 meson.build | 1 + 25 src/backlight/backlight.c | 1 + 26 src/basic/cgroup-util.c | 1 + 27 src/basic/env-util.c | 1 + 28 src/basic/log.c | 1 + 29 src/basic/missing_stdlib.h | 12 ++++++++++++ 30 src/basic/mkdir.c | 1 + 31 src/basic/mountpoint-util.c | 1 + 32 src/basic/parse-util.c | 1 + 33 src/basic/path-lookup.c | 1 + 34 src/basic/percent-util.c | 1 + 35 src/basic/proc-cmdline.c | 1 + 36 src/basic/procfs-util.c | 1 + 37 src/basic/time-util.c | 1 + 38 src/boot/bless-boot.c | 1 + 39 src/core/dbus-cgroup.c | 1 + 40 src/core/dbus-execute.c | 1 + 41 src/core/dbus-util.c | 1 + 42 src/core/execute.c | 1 + 43 src/core/kmod-setup.c | 1 + 44 src/core/service.c | 1 + 45 src/coredump/coredump-vacuum.c | 1 + 46 src/fstab-generator/fstab-generator.c | 1 + 47 src/journal-remote/journal-remote-main.c | 1 + 48 src/journal/journalctl.c | 1 + 49 src/libsystemd/sd-bus/bus-message.c | 1 + 50 src/libsystemd/sd-bus/bus-objects.c | 1 + 51 src/libsystemd/sd-bus/bus-socket.c | 1 + 52 src/libsystemd/sd-bus/sd-bus.c | 1 + 53 src/libsystemd/sd-bus/test-bus-benchmark.c | 1 + 54 src/libsystemd/sd-journal/sd-journal.c | 1 + 55 src/login/pam_systemd.c | 1 + 56 src/network/generator/network-generator.c | 1 + 57 src/nspawn/nspawn-settings.c | 1 + 58 src/nss-mymachines/nss-mymachines.c | 1 + 59 src/portable/portable.c | 1 + 60 src/resolve/resolvectl.c | 1 + 61 src/shared/bus-get-properties.c | 1 + 62 src/shared/bus-unit-procs.c | 1 + 63 src/shared/bus-unit-util.c | 1 + 64 src/shared/bus-util.c | 1 + 65 src/shared/dns-domain.c | 1 + 66 src/shared/journal-importer.c | 1 + 67 src/shared/logs-show.c | 1 + 68 src/shared/pager.c | 1 + 69 src/socket-proxy/socket-proxyd.c | 1 + 70 src/test/test-hexdecoct.c | 1 + 71 src/udev/udev-builtin-net_id.c | 1 + 72 src/udev/udev-builtin-path_id.c | 1 + 73 src/udev/udev-event.c | 1 + 74 src/udev/udev-rules.c | 1 + 75 51 files changed, 62 insertions(+) 76 77diff --git a/meson.build b/meson.build 78index 01fd3ffc19..61a872b753 100644 79--- a/meson.build 80+++ b/meson.build 81@@ -567,6 +567,7 @@ foreach ident : ['secure_getenv', '__secure_getenv'] 82 endforeach 83 84 foreach ident : [ 85+ ['strndupa' , '''#include <string.h>'''], 86 ['memfd_create', '''#include <sys/mman.h>'''], 87 ['gettid', '''#include <sys/types.h> 88 #include <unistd.h>'''], 89diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c 90index 5ac9f904a9..99d5122dd7 100644 91--- a/src/backlight/backlight.c 92+++ b/src/backlight/backlight.c 93@@ -20,6 +20,7 @@ 94 #include "string-util.h" 95 #include "strv.h" 96 #include "terminal-util.h" 97+#include "missing_stdlib.h" 98 99 #define PCI_CLASS_GRAPHICS_CARD 0x30000 100 101diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c 102index 18b16ecc0e..d2be79622f 100644 103--- a/src/basic/cgroup-util.c 104+++ b/src/basic/cgroup-util.c 105@@ -38,6 +38,7 @@ 106 #include "unit-name.h" 107 #include "user-util.h" 108 #include "xattr-util.h" 109+#include "missing_stdlib.h" 110 111 static int cg_enumerate_items(const char *controller, const char *path, FILE **ret, const char *item) { 112 _cleanup_free_ char *fs = NULL; 113diff --git a/src/basic/env-util.c b/src/basic/env-util.c 114index d3bf73385f..16b17358ca 100644 115--- a/src/basic/env-util.c 116+++ b/src/basic/env-util.c 117@@ -19,6 +19,7 @@ 118 #include "string-util.h" 119 #include "strv.h" 120 #include "utf8.h" 121+#include "missing_stdlib.h" 122 123 /* We follow bash for the character set. Different shells have different rules. */ 124 #define VALID_BASH_ENV_NAME_CHARS \ 125diff --git a/src/basic/log.c b/src/basic/log.c 126index 1470611a75..9924ec2b9a 100644 127--- a/src/basic/log.c 128+++ b/src/basic/log.c 129@@ -40,6 +40,7 @@ 130 #include "terminal-util.h" 131 #include "time-util.h" 132 #include "utf8.h" 133+#include "missing_stdlib.h" 134 135 #define SNDBUF_SIZE (8*1024*1024) 136 #define IOVEC_MAX 256U 137diff --git a/src/basic/missing_stdlib.h b/src/basic/missing_stdlib.h 138index 8c76f93eb2..9068bfb4f0 100644 139--- a/src/basic/missing_stdlib.h 140+++ b/src/basic/missing_stdlib.h 141@@ -11,3 +11,15 @@ 142 # error "neither secure_getenv nor __secure_getenv are available" 143 # endif 144 #endif 145+ 146+/* string.h */ 147+#if ! HAVE_STRNDUPA 148+#define strndupa(s, n) \ 149+ ({ \ 150+ const char *__old = (s); \ 151+ size_t __len = strnlen(__old, (n)); \ 152+ char *__new = (char *)alloca(__len + 1); \ 153+ __new[__len] = '\0'; \ 154+ (char *)memcpy(__new, __old, __len); \ 155+ }) 156+#endif 157diff --git a/src/basic/mkdir.c b/src/basic/mkdir.c 158index c770e5ed32..1fd8816cd0 100644 159--- a/src/basic/mkdir.c 160+++ b/src/basic/mkdir.c 161@@ -16,6 +16,7 @@ 162 #include "stat-util.h" 163 #include "stdio-util.h" 164 #include "user-util.h" 165+#include "missing_stdlib.h" 166 167 int mkdirat_safe_internal( 168 int dir_fd, 169diff --git a/src/basic/mountpoint-util.c b/src/basic/mountpoint-util.c 170index bf67f7e01a..409f8d8a73 100644 171--- a/src/basic/mountpoint-util.c 172+++ b/src/basic/mountpoint-util.c 173@@ -18,6 +18,7 @@ 174 #include "missing_stat.h" 175 #include "missing_syscall.h" 176 #include "mkdir.h" 177+#include "missing_stdlib.h" 178 #include "mountpoint-util.h" 179 #include "nulstr-util.h" 180 #include "parse-util.h" 181diff --git a/src/basic/parse-util.c b/src/basic/parse-util.c 182index 0430e33e40..f3728de026 100644 183--- a/src/basic/parse-util.c 184+++ b/src/basic/parse-util.c 185@@ -18,6 +18,7 @@ 186 #include "stat-util.h" 187 #include "string-util.h" 188 #include "strv.h" 189+#include "missing_stdlib.h" 190 191 int parse_boolean(const char *v) { 192 if (!v) 193diff --git a/src/basic/path-lookup.c b/src/basic/path-lookup.c 194index 4e3d59fc56..726e240df0 100644 195--- a/src/basic/path-lookup.c 196+++ b/src/basic/path-lookup.c 197@@ -16,6 +16,7 @@ 198 #include "strv.h" 199 #include "tmpfile-util.h" 200 #include "user-util.h" 201+#include "missing_stdlib.h" 202 203 int xdg_user_runtime_dir(char **ret, const char *suffix) { 204 const char *e; 205diff --git a/src/basic/percent-util.c b/src/basic/percent-util.c 206index cab9d0eaea..5f6ca258e9 100644 207--- a/src/basic/percent-util.c 208+++ b/src/basic/percent-util.c 209@@ -3,6 +3,7 @@ 210 #include "percent-util.h" 211 #include "string-util.h" 212 #include "parse-util.h" 213+#include "missing_stdlib.h" 214 215 static int parse_parts_value_whole(const char *p, const char *symbol) { 216 const char *pc, *n; 217diff --git a/src/basic/proc-cmdline.c b/src/basic/proc-cmdline.c 218index 522d8de1f4..7c129dc0fc 100644 219--- a/src/basic/proc-cmdline.c 220+++ b/src/basic/proc-cmdline.c 221@@ -16,6 +16,7 @@ 222 #include "string-util.h" 223 #include "strv.h" 224 #include "virt.h" 225+#include "missing_stdlib.h" 226 227 int proc_cmdline_filter_pid1_args(char **argv, char ***ret) { 228 enum { 229diff --git a/src/basic/procfs-util.c b/src/basic/procfs-util.c 230index d7cfcd9105..6cb0ddf575 100644 231--- a/src/basic/procfs-util.c 232+++ b/src/basic/procfs-util.c 233@@ -12,6 +12,7 @@ 234 #include "procfs-util.h" 235 #include "stdio-util.h" 236 #include "string-util.h" 237+#include "missing_stdlib.h" 238 239 int procfs_get_pid_max(uint64_t *ret) { 240 _cleanup_free_ char *value = NULL; 241diff --git a/src/basic/time-util.c b/src/basic/time-util.c 242index f9014dc560..1d7840a5b5 100644 243--- a/src/basic/time-util.c 244+++ b/src/basic/time-util.c 245@@ -27,6 +27,7 @@ 246 #include "string-util.h" 247 #include "strv.h" 248 #include "time-util.h" 249+#include "missing_stdlib.h" 250 251 static clockid_t map_clock_id(clockid_t c) { 252 253diff --git a/src/boot/bless-boot.c b/src/boot/bless-boot.c 254index 0c0b4f23c7..68fe5ca509 100644 255--- a/src/boot/bless-boot.c 256+++ b/src/boot/bless-boot.c 257@@ -22,6 +22,7 @@ 258 #include "terminal-util.h" 259 #include "verbs.h" 260 #include "virt.h" 261+#include "missing_stdlib.h" 262 263 static char **arg_path = NULL; 264 265diff --git a/src/core/dbus-cgroup.c b/src/core/dbus-cgroup.c 266index 4237e694c0..05f9d9d9a9 100644 267--- a/src/core/dbus-cgroup.c 268+++ b/src/core/dbus-cgroup.c 269@@ -25,6 +25,7 @@ 270 #include "parse-util.h" 271 #include "path-util.h" 272 #include "percent-util.h" 273+#include "missing_stdlib.h" 274 #include "socket-util.h" 275 276 BUS_DEFINE_PROPERTY_GET(bus_property_get_tasks_max, "t", CGroupTasksMax, cgroup_tasks_max_resolve); 277diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c 278index 4daa1cefd3..2c77901471 100644 279--- a/src/core/dbus-execute.c 280+++ b/src/core/dbus-execute.c 281@@ -42,6 +42,7 @@ 282 #include "unit-printf.h" 283 #include "user-util.h" 284 #include "utf8.h" 285+#include "missing_stdlib.h" 286 287 BUS_DEFINE_PROPERTY_GET_ENUM(bus_property_get_exec_output, exec_output, ExecOutput); 288 static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_exec_input, exec_input, ExecInput); 289diff --git a/src/core/dbus-util.c b/src/core/dbus-util.c 290index d680a64268..e59f48103e 100644 291--- a/src/core/dbus-util.c 292+++ b/src/core/dbus-util.c 293@@ -9,6 +9,7 @@ 294 #include "unit-printf.h" 295 #include "user-util.h" 296 #include "unit.h" 297+#include "missing_stdlib.h" 298 299 int bus_property_get_triggered_unit( 300 sd_bus *bus, 301diff --git a/src/core/execute.c b/src/core/execute.c 302index ef0bf88687..bd3da0c401 100644 303--- a/src/core/execute.c 304+++ b/src/core/execute.c 305@@ -72,6 +72,7 @@ 306 #include "unit-serialize.h" 307 #include "user-util.h" 308 #include "utmp-wtmp.h" 309+#include "missing_stdlib.h" 310 311 static bool is_terminal_input(ExecInput i) { 312 return IN_SET(i, 313diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c 314index b8e3f7aadd..8ce8ca68d8 100644 315--- a/src/core/kmod-setup.c 316+++ b/src/core/kmod-setup.c 317@@ -13,6 +13,7 @@ 318 #include "string-util.h" 319 #include "strv.h" 320 #include "virt.h" 321+#include "missing_stdlib.h" 322 323 #if HAVE_KMOD 324 #include "module-util.h" 325diff --git a/src/core/service.c b/src/core/service.c 326index b9eb40c555..268fe7573b 100644 327--- a/src/core/service.c 328+++ b/src/core/service.c 329@@ -45,6 +45,7 @@ 330 #include "unit-name.h" 331 #include "unit.h" 332 #include "utf8.h" 333+#include "missing_stdlib.h" 334 335 #define service_spawn(...) service_spawn_internal(__func__, __VA_ARGS__) 336 337diff --git a/src/coredump/coredump-vacuum.c b/src/coredump/coredump-vacuum.c 338index 7e0c98cb7d..978a7f5874 100644 339--- a/src/coredump/coredump-vacuum.c 340+++ b/src/coredump/coredump-vacuum.c 341@@ -17,6 +17,7 @@ 342 #include "string-util.h" 343 #include "time-util.h" 344 #include "user-util.h" 345+#include "missing_stdlib.h" 346 347 #define DEFAULT_MAX_USE_LOWER (uint64_t) (1ULL*1024ULL*1024ULL) /* 1 MiB */ 348 #define DEFAULT_MAX_USE_UPPER (uint64_t) (4ULL*1024ULL*1024ULL*1024ULL) /* 4 GiB */ 349diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c 350index 016f3baa7f..b1def81313 100644 351--- a/src/fstab-generator/fstab-generator.c 352+++ b/src/fstab-generator/fstab-generator.c 353@@ -37,6 +37,7 @@ 354 #include "unit-name.h" 355 #include "virt.h" 356 #include "volatile-util.h" 357+#include "missing_stdlib.h" 358 359 typedef enum MountPointFlags { 360 MOUNT_NOAUTO = 1 << 0, 361diff --git a/src/journal-remote/journal-remote-main.c b/src/journal-remote/journal-remote-main.c 362index da0f20d3ce..f22ce41908 100644 363--- a/src/journal-remote/journal-remote-main.c 364+++ b/src/journal-remote/journal-remote-main.c 365@@ -27,6 +27,7 @@ 366 #include "stat-util.h" 367 #include "string-table.h" 368 #include "strv.h" 369+#include "missing_stdlib.h" 370 371 #define PRIV_KEY_FILE CERTIFICATE_ROOT "/private/journal-remote.pem" 372 #define CERT_FILE CERTIFICATE_ROOT "/certs/journal-remote.pem" 373diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c 374index 7f3dcd56a4..41b7cbaaf1 100644 375--- a/src/journal/journalctl.c 376+++ b/src/journal/journalctl.c 377@@ -77,6 +77,7 @@ 378 #include "unit-name.h" 379 #include "user-util.h" 380 #include "varlink.h" 381+#include "missing_stdlib.h" 382 383 #define DEFAULT_FSS_INTERVAL_USEC (15*USEC_PER_MINUTE) 384 #define PROCESS_INOTIFY_INTERVAL 1024 /* Every 1,024 messages processed */ 385diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c 386index ff0228081f..9066fcb133 100644 387--- a/src/libsystemd/sd-bus/bus-message.c 388+++ b/src/libsystemd/sd-bus/bus-message.c 389@@ -19,6 +19,7 @@ 390 #include "strv.h" 391 #include "time-util.h" 392 #include "utf8.h" 393+#include "missing_stdlib.h" 394 395 static int message_append_basic(sd_bus_message *m, char type, const void *p, const void **stored); 396 static int message_parse_fields(sd_bus_message *m); 397diff --git a/src/libsystemd/sd-bus/bus-objects.c b/src/libsystemd/sd-bus/bus-objects.c 398index c25c40ff37..57a5da704f 100644 399--- a/src/libsystemd/sd-bus/bus-objects.c 400+++ b/src/libsystemd/sd-bus/bus-objects.c 401@@ -11,6 +11,7 @@ 402 #include "missing_capability.h" 403 #include "string-util.h" 404 #include "strv.h" 405+#include "missing_stdlib.h" 406 407 static int node_vtable_get_userdata( 408 sd_bus *bus, 409diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c 410index 3c59d0d615..746922d46f 100644 411--- a/src/libsystemd/sd-bus/bus-socket.c 412+++ b/src/libsystemd/sd-bus/bus-socket.c 413@@ -29,6 +29,7 @@ 414 #include "string-util.h" 415 #include "user-util.h" 416 #include "utf8.h" 417+#include "missing_stdlib.h" 418 419 #define SNDBUF_SIZE (8*1024*1024) 420 421diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c 422index 4a0259f8bb..aaa90d2223 100644 423--- a/src/libsystemd/sd-bus/sd-bus.c 424+++ b/src/libsystemd/sd-bus/sd-bus.c 425@@ -46,6 +46,7 @@ 426 #include "string-util.h" 427 #include "strv.h" 428 #include "user-util.h" 429+#include "missing_stdlib.h" 430 431 #define log_debug_bus_message(m) \ 432 do { \ 433diff --git a/src/libsystemd/sd-bus/test-bus-benchmark.c b/src/libsystemd/sd-bus/test-bus-benchmark.c 434index d988588de0..458df8df9a 100644 435--- a/src/libsystemd/sd-bus/test-bus-benchmark.c 436+++ b/src/libsystemd/sd-bus/test-bus-benchmark.c 437@@ -14,6 +14,7 @@ 438 #include "string-util.h" 439 #include "tests.h" 440 #include "time-util.h" 441+#include "missing_stdlib.h" 442 443 #define MAX_SIZE (2*1024*1024) 444 445diff --git a/src/libsystemd/sd-journal/sd-journal.c b/src/libsystemd/sd-journal/sd-journal.c 446index 6b9ff0a4ed..4a5027ad0f 100644 447--- a/src/libsystemd/sd-journal/sd-journal.c 448+++ b/src/libsystemd/sd-journal/sd-journal.c 449@@ -44,6 +44,7 @@ 450 #include "strv.h" 451 #include "syslog-util.h" 452 #include "uid-alloc-range.h" 453+#include "missing_stdlib.h" 454 455 #define JOURNAL_FILES_RECHECK_USEC (2 * USEC_PER_SEC) 456 457diff --git a/src/login/pam_systemd.c b/src/login/pam_systemd.c 458index b8da266e27..4bb8dd9496 100644 459--- a/src/login/pam_systemd.c 460+++ b/src/login/pam_systemd.c 461@@ -35,6 +35,7 @@ 462 #include "login-util.h" 463 #include "macro.h" 464 #include "missing_syscall.h" 465+#include "missing_stdlib.h" 466 #include "pam-util.h" 467 #include "parse-util.h" 468 #include "path-util.h" 469diff --git a/src/network/generator/network-generator.c b/src/network/generator/network-generator.c 470index 48527a2c73..9777fe0561 100644 471--- a/src/network/generator/network-generator.c 472+++ b/src/network/generator/network-generator.c 473@@ -14,6 +14,7 @@ 474 #include "string-table.h" 475 #include "string-util.h" 476 #include "strv.h" 477+#include "missing_stdlib.h" 478 479 /* 480 # .network 481diff --git a/src/nspawn/nspawn-settings.c b/src/nspawn/nspawn-settings.c 482index 161b1c1c70..ba1c459f78 100644 483--- a/src/nspawn/nspawn-settings.c 484+++ b/src/nspawn/nspawn-settings.c 485@@ -16,6 +16,7 @@ 486 #include "string-util.h" 487 #include "strv.h" 488 #include "user-util.h" 489+#include "missing_stdlib.h" 490 491 Settings *settings_new(void) { 492 Settings *s; 493diff --git a/src/nss-mymachines/nss-mymachines.c b/src/nss-mymachines/nss-mymachines.c 494index c64e79bdff..eda26b0b9a 100644 495--- a/src/nss-mymachines/nss-mymachines.c 496+++ b/src/nss-mymachines/nss-mymachines.c 497@@ -21,6 +21,7 @@ 498 #include "nss-util.h" 499 #include "signal-util.h" 500 #include "string-util.h" 501+#include "missing_stdlib.h" 502 503 static void setup_logging_once(void) { 504 static pthread_once_t once = PTHREAD_ONCE_INIT; 505diff --git a/src/portable/portable.c b/src/portable/portable.c 506index d4b448a627..bb26623565 100644 507--- a/src/portable/portable.c 508+++ b/src/portable/portable.c 509@@ -40,6 +40,7 @@ 510 #include "strv.h" 511 #include "tmpfile-util.h" 512 #include "user-util.h" 513+#include "missing_stdlib.h" 514 515 /* Markers used in the first line of our 20-portable.conf unit file drop-in to determine, that a) the unit file was 516 * dropped there by the portable service logic and b) for which image it was dropped there. */ 517diff --git a/src/resolve/resolvectl.c b/src/resolve/resolvectl.c 518index afa537f160..32ccee4ae5 100644 519--- a/src/resolve/resolvectl.c 520+++ b/src/resolve/resolvectl.c 521@@ -48,6 +48,7 @@ 522 #include "varlink.h" 523 #include "verb-log-control.h" 524 #include "verbs.h" 525+#include "missing_stdlib.h" 526 527 static int arg_family = AF_UNSPEC; 528 static int arg_ifindex = 0; 529diff --git a/src/shared/bus-get-properties.c b/src/shared/bus-get-properties.c 530index 53e5d6b99f..851ecd5644 100644 531--- a/src/shared/bus-get-properties.c 532+++ b/src/shared/bus-get-properties.c 533@@ -4,6 +4,7 @@ 534 #include "rlimit-util.h" 535 #include "stdio-util.h" 536 #include "string-util.h" 537+#include "missing_stdlib.h" 538 539 int bus_property_get_bool( 540 sd_bus *bus, 541diff --git a/src/shared/bus-unit-procs.c b/src/shared/bus-unit-procs.c 542index 8b462b5627..183ce1c18e 100644 543--- a/src/shared/bus-unit-procs.c 544+++ b/src/shared/bus-unit-procs.c 545@@ -11,6 +11,7 @@ 546 #include "sort-util.h" 547 #include "string-util.h" 548 #include "terminal-util.h" 549+#include "missing_stdlib.h" 550 551 struct CGroupInfo { 552 char *cgroup_path; 553diff --git a/src/shared/bus-unit-util.c b/src/shared/bus-unit-util.c 554index 4ee9706847..30c8084847 100644 555--- a/src/shared/bus-unit-util.c 556+++ b/src/shared/bus-unit-util.c 557@@ -50,6 +50,7 @@ 558 #include "unit-def.h" 559 #include "user-util.h" 560 #include "utf8.h" 561+#include "missing_stdlib.h" 562 563 int bus_parse_unit_info(sd_bus_message *message, UnitInfo *u) { 564 assert(message); 565diff --git a/src/shared/bus-util.c b/src/shared/bus-util.c 566index 4123152d93..74f148c8b4 100644 567--- a/src/shared/bus-util.c 568+++ b/src/shared/bus-util.c 569@@ -24,6 +24,7 @@ 570 #include "path-util.h" 571 #include "socket-util.h" 572 #include "stdio-util.h" 573+#include "missing_stdlib.h" 574 575 static int name_owner_change_callback(sd_bus_message *m, void *userdata, sd_bus_error *ret_error) { 576 sd_event *e = ASSERT_PTR(userdata); 577diff --git a/src/shared/dns-domain.c b/src/shared/dns-domain.c 578index b41c9b06ca..e69050a507 100644 579--- a/src/shared/dns-domain.c 580+++ b/src/shared/dns-domain.c 581@@ -18,6 +18,7 @@ 582 #include "string-util.h" 583 #include "strv.h" 584 #include "utf8.h" 585+#include "missing_stdlib.h" 586 587 int dns_label_unescape(const char **name, char *dest, size_t sz, DNSLabelFlags flags) { 588 const char *n; 589diff --git a/src/shared/journal-importer.c b/src/shared/journal-importer.c 590index 83e9834bbf..74eaae6f5e 100644 591--- a/src/shared/journal-importer.c 592+++ b/src/shared/journal-importer.c 593@@ -16,6 +16,7 @@ 594 #include "string-util.h" 595 #include "strv.h" 596 #include "unaligned.h" 597+#include "missing_stdlib.h" 598 599 enum { 600 IMPORTER_STATE_LINE = 0, /* waiting to read, or reading line */ 601diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c 602index a5d04003bd..10392c132d 100644 603--- a/src/shared/logs-show.c 604+++ b/src/shared/logs-show.c 605@@ -41,6 +41,7 @@ 606 #include "time-util.h" 607 #include "utf8.h" 608 #include "web-util.h" 609+#include "missing_stdlib.h" 610 611 /* up to three lines (each up to 100 characters) or 300 characters, whichever is less */ 612 #define PRINT_LINE_THRESHOLD 3 613diff --git a/src/shared/pager.c b/src/shared/pager.c 614index 19deefab56..6b6d0af1a0 100644 615--- a/src/shared/pager.c 616+++ b/src/shared/pager.c 617@@ -25,6 +25,7 @@ 618 #include "string-util.h" 619 #include "strv.h" 620 #include "terminal-util.h" 621+#include "missing_stdlib.h" 622 623 static pid_t pager_pid = 0; 624 625diff --git a/src/socket-proxy/socket-proxyd.c b/src/socket-proxy/socket-proxyd.c 626index 287fd6c181..8f8d5493da 100644 627--- a/src/socket-proxy/socket-proxyd.c 628+++ b/src/socket-proxy/socket-proxyd.c 629@@ -27,6 +27,7 @@ 630 #include "set.h" 631 #include "socket-util.h" 632 #include "string-util.h" 633+#include "missing_stdlib.h" 634 635 #define BUFFER_SIZE (256 * 1024) 636 637diff --git a/src/test/test-hexdecoct.c b/src/test/test-hexdecoct.c 638index f884008660..987e180697 100644 639--- a/src/test/test-hexdecoct.c 640+++ b/src/test/test-hexdecoct.c 641@@ -7,6 +7,7 @@ 642 #include "macro.h" 643 #include "random-util.h" 644 #include "string-util.h" 645+#include "missing_stdlib.h" 646 #include "tests.h" 647 648 TEST(hexchar) { 649diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c 650index 91b40088f4..f528a46b8e 100644 651--- a/src/udev/udev-builtin-net_id.c 652+++ b/src/udev/udev-builtin-net_id.c 653@@ -39,6 +39,7 @@ 654 #include "strv.h" 655 #include "strxcpyx.h" 656 #include "udev-builtin.h" 657+#include "missing_stdlib.h" 658 659 #define ONBOARD_14BIT_INDEX_MAX ((1U << 14) - 1) 660 #define ONBOARD_16BIT_INDEX_MAX ((1U << 16) - 1) 661diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c 662index 467c9a6ad3..f74dae60af 100644 663--- a/src/udev/udev-builtin-path_id.c 664+++ b/src/udev/udev-builtin-path_id.c 665@@ -24,6 +24,7 @@ 666 #include "sysexits.h" 667 #include "udev-builtin.h" 668 #include "udev-util.h" 669+#include "missing_stdlib.h" 670 671 _printf_(2,3) 672 static void path_prepend(char **path, const char *fmt, ...) { 673diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c 674index ed22c8b679..19ebe20237 100644 675--- a/src/udev/udev-event.c 676+++ b/src/udev/udev-event.c 677@@ -16,6 +16,7 @@ 678 #include "udev-util.h" 679 #include "udev-watch.h" 680 #include "user-util.h" 681+#include "missing_stdlib.h" 682 683 UdevEvent *udev_event_new(sd_device *dev, usec_t exec_delay_usec, sd_netlink *rtnl, int log_level) { 684 UdevEvent *event; 685diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c 686index 5f12002394..febe345b4c 100644 687--- a/src/udev/udev-rules.c 688+++ b/src/udev/udev-rules.c 689@@ -41,6 +41,7 @@ 690 #include "udev-util.h" 691 #include "user-util.h" 692 #include "virt.h" 693+#include "missing_stdlib.h" 694 695 #define RULES_DIRS ((const char* const*) CONF_PATHS_STRV("udev/rules.d")) 696 697-- 6982.34.1 699 700