diff options
-rw-r--r-- | TODO | 2 | ||||
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | src/core/dbus.c | 7 | ||||
-rw-r--r-- | src/libudev/libudev.c | 3 | ||||
-rw-r--r-- | src/shared/dbus-common.c | 3 | ||||
-rw-r--r-- | src/shared/log.c | 9 | ||||
-rw-r--r-- | src/shared/missing.h | 10 |
7 files changed, 24 insertions, 11 deletions
@@ -538,7 +538,7 @@ Regularly: * set_put(), hashmap_put() return values check. i.e. == 0 doesn't free()! -* use __secure_getenv() instead of getenv() where appropriate +* use secure_getenv() instead of getenv() where appropriate Scheduled for removal (or fixing): diff --git a/configure.ac b/configure.ac index da550212eb..b9891369a1 100644 --- a/configure.ac +++ b/configure.ac @@ -173,6 +173,7 @@ LIBS="$save_LIBS" AC_SUBST(CAP_LIBS) AC_CHECK_FUNCS([fanotify_init fanotify_mark name_to_handle_at]) +AC_CHECK_FUNCS([__secure_getenv secure_getenv]) AC_CHECK_DECLS([gettid, pivot_root], [], [], [[#include <sys/types.h> #include <unistd.h> #include <sys/mount.h>]]) diff --git a/src/core/dbus.c b/src/core/dbus.c index 75773aaa49..f05f610718 100644 --- a/src/core/dbus.c +++ b/src/core/dbus.c @@ -30,6 +30,7 @@ #include "strv.h" #include "cgroup.h" #include "mkdir.h" +#include "missing.h" #include "dbus-unit.h" #include "dbus-job.h" #include "dbus-manager.h" @@ -955,12 +956,12 @@ static DBusConnection* manager_bus_connect_private(Manager *m, DBusBusType type) switch (type) { case DBUS_BUS_SYSTEM: - address = __secure_getenv("DBUS_SYSTEM_BUS_ADDRESS"); + address = secure_getenv("DBUS_SYSTEM_BUS_ADDRESS"); if (!address || !address[0]) address = DBUS_SYSTEM_BUS_DEFAULT_ADDRESS; break; case DBUS_BUS_SESSION: - address = __secure_getenv("DBUS_SESSION_BUS_ADDRESS"); + address = secure_getenv("DBUS_SESSION_BUS_ADDRESS"); if (!address || !address[0]) address = DBUS_SESSION_BUS_DEFAULT_ADDRESS; break; @@ -1077,7 +1078,7 @@ static int bus_init_private(Manager *m) { const char *e; char *p; - e = __secure_getenv("XDG_RUNTIME_DIR"); + e = secure_getenv("XDG_RUNTIME_DIR"); if (!e) return 0; diff --git a/src/libudev/libudev.c b/src/libudev/libudev.c index 1a74808411..af36cc4452 100644 --- a/src/libudev/libudev.c +++ b/src/libudev/libudev.c @@ -21,6 +21,7 @@ #include "libudev.h" #include "libudev-private.h" +#include "missing.h" /** * SECTION:libudev @@ -191,7 +192,7 @@ _public_ struct udev *udev_new(void) } /* environment overrides config */ - env = __secure_getenv("UDEV_LOG"); + env = secure_getenv("UDEV_LOG"); if (env != NULL) udev_set_log_priority(udev, util_log_priority(env)); diff --git a/src/shared/dbus-common.c b/src/shared/dbus-common.c index b8229bd663..0c73d6c6a8 100644 --- a/src/shared/dbus-common.c +++ b/src/shared/dbus-common.c @@ -32,6 +32,7 @@ #include "log.h" #include "dbus-common.h" #include "util.h" +#include "missing.h" #include "def.h" #include "strv.h" @@ -121,7 +122,7 @@ int bus_connect(DBusBusType t, DBusConnection **_bus, bool *_private, DBusError * try via XDG_RUNTIME_DIR first, then * fallback to normal bus access */ - e = __secure_getenv("XDG_RUNTIME_DIR"); + e = secure_getenv("XDG_RUNTIME_DIR"); if (e) { char *p; diff --git a/src/shared/log.c b/src/shared/log.c index 847202d7d3..96634645bc 100644 --- a/src/shared/log.c +++ b/src/shared/log.c @@ -30,6 +30,7 @@ #include "log.h" #include "util.h" +#include "missing.h" #include "macro.h" #include "socket-util.h" @@ -804,19 +805,19 @@ int log_set_max_level_from_string(const char *e) { void log_parse_environment(void) { const char *e; - e = __secure_getenv("SYSTEMD_LOG_TARGET"); + e = secure_getenv("SYSTEMD_LOG_TARGET"); if (e && log_set_target_from_string(e) < 0) log_warning("Failed to parse log target %s. Ignoring.", e); - e = __secure_getenv("SYSTEMD_LOG_LEVEL"); + e = secure_getenv("SYSTEMD_LOG_LEVEL"); if (e && log_set_max_level_from_string(e) < 0) log_warning("Failed to parse log level %s. Ignoring.", e); - e = __secure_getenv("SYSTEMD_LOG_COLOR"); + e = secure_getenv("SYSTEMD_LOG_COLOR"); if (e && log_show_color_from_string(e) < 0) log_warning("Failed to parse bool %s. Ignoring.", e); - e = __secure_getenv("SYSTEMD_LOG_LOCATION"); + e = secure_getenv("SYSTEMD_LOG_LOCATION"); if (e && log_show_location_from_string(e) < 0) log_warning("Failed to parse bool %s. Ignoring.", e); } diff --git a/src/shared/missing.h b/src/shared/missing.h index 7fbb9259eb..c5bb71a504 100644 --- a/src/shared/missing.h +++ b/src/shared/missing.h @@ -26,6 +26,7 @@ #include <sys/resource.h> #include <sys/syscall.h> #include <fcntl.h> +#include <stdlib.h> #include <unistd.h> #include <linux/oom.h> @@ -218,7 +219,6 @@ static inline pid_t gettid(void) { #endif #ifndef HAVE_NAME_TO_HANDLE_AT - struct file_handle { unsigned int handle_bytes; int handle_type; @@ -229,3 +229,11 @@ static inline int name_to_handle_at(int fd, const char *name, struct file_handle return syscall(__NR_name_to_handle_at, fd, name, handle, mnt_id, flags); } #endif + +#ifndef HAVE_SECURE_GETENV +# ifdef HAVE___SECURE_GETENV +# define secure_getenv __secure_getenv +# else +# error neither secure_getenv nor __secure_getenv are available +# endif +#endif |