summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2012-08-23 18:47:01 +0200
committerLennart Poettering <lennart@poettering.net>2012-09-03 18:59:04 -0700
commit88fae6e0441d4195e089434f07d3e7fd811d6297 (patch)
treef5117932fa7dbf0e7cec4a11d01b87ca521623aa /src
parentfe1fed02c7637a2c18cd575f78be7fda27972148 (diff)
downloadsystemd-88fae6e0441d4195e089434f07d3e7fd811d6297.tar.gz
shared: in code that might get called from suid programs use __secure_getenv() rather than getenv()
It's better to be safe than sorry.
Diffstat (limited to 'src')
-rw-r--r--src/core/dbus.c6
-rw-r--r--src/libudev/libudev.c2
-rw-r--r--src/shared/dbus-common.c2
-rw-r--r--src/shared/log.c24
4 files changed, 17 insertions, 17 deletions
diff --git a/src/core/dbus.c b/src/core/dbus.c
index 9db172b6e6..1fc714823e 100644
--- a/src/core/dbus.c
+++ b/src/core/dbus.c
@@ -955,12 +955,12 @@ static DBusConnection* manager_bus_connect_private(Manager *m, DBusBusType type)
switch (type) {
case DBUS_BUS_SYSTEM:
- address = 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 = 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 +1077,7 @@ static int bus_init_private(Manager *m) {
const char *e;
char *p;
- e = 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 07a24d5c3c..1a74808411 100644
--- a/src/libudev/libudev.c
+++ b/src/libudev/libudev.c
@@ -191,7 +191,7 @@ _public_ struct udev *udev_new(void)
}
/* environment overrides config */
- env = 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 da2dc2e983..8d7c4620ce 100644
--- a/src/shared/dbus-common.c
+++ b/src/shared/dbus-common.c
@@ -121,7 +121,7 @@ int bus_connect(DBusBusType t, DBusConnection **_bus, bool *_private, DBusError
* try via XDG_RUNTIME_DIR first, then
* fallback to normal bus access */
- e = 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 1cbc9d6250..4fc430eed1 100644
--- a/src/shared/log.c
+++ b/src/shared/log.c
@@ -688,21 +688,21 @@ int log_set_max_level_from_string(const char *e) {
void log_parse_environment(void) {
const char *e;
- if ((e = getenv("SYSTEMD_LOG_TARGET")))
- if (log_set_target_from_string(e) < 0)
- log_warning("Failed to parse log target %s. Ignoring.", e);
+ 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);
- if ((e = getenv("SYSTEMD_LOG_LEVEL")))
- if (log_set_max_level_from_string(e) < 0)
- log_warning("Failed to parse log level %s. Ignoring.", e);
+ 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);
- if ((e = getenv("SYSTEMD_LOG_COLOR")))
- if (log_show_color_from_string(e) < 0)
- log_warning("Failed to parse bool %s. Ignoring.", e);
+ e = __secure_getenv("SYSTEMD_LOG_COLOR");
+ if (e && log_show_color_from_string(e) < 0)
+ log_warning("Failed to parse bool %s. Ignoring.", e);
- if ((e = getenv("SYSTEMD_LOG_LOCATION")))
- if (log_show_location_from_string(e) < 0)
- log_warning("Failed to parse bool %s. Ignoring.", e);
+ e = __secure_getenv("SYSTEMD_LOG_LOCATION");
+ if (e && log_show_location_from_string(e) < 0)
+ log_warning("Failed to parse bool %s. Ignoring.", e);
}
LogTarget log_get_target(void) {