diff --git a/ChangeLog b/ChangeLog index 45458322df..df1b87c0b2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-08-12 Dan Williams + + * callouts/nm-dhcp-client-action.c + - (build_message): ignore non-DHCP-related environment variables + 2007-08-12 Dan Williams * Makefile.am diff --git a/callouts/nm-dhcp-client-action.c b/callouts/nm-dhcp-client-action.c index 9e36df12eb..96e232d423 100644 --- a/callouts/nm-dhcp-client-action.c +++ b/callouts/nm-dhcp-client-action.c @@ -176,11 +176,14 @@ dbus_bool_t wpa_dbus_dict_append_byte_array(DBusMessageIter *iter_dict, } +const char ** ignore[] = {"PATH", "SHLVL", "_", "PWD", "dhc_dbus", NULL}; + dbus_bool_t build_message (DBusMessage * message) { char ** env = NULL; char ** item; + char ** p; dbus_bool_t success = FALSE; DBusMessageIter iter, iter_dict; @@ -191,8 +194,17 @@ build_message (DBusMessage * message) /* List environment and format for dbus dict */ env = g_listenv (); for (item = env; *item; item++) { + gboolean ignore_item = FALSE; const char * val = g_getenv (*item); + /* Ignore non-DCHP-related environment variables */ + for (p = (char **) ignore; *p && !ignore_item; p++) { + if (strncmp (*item, *p, strlen (*p)) == 0) + ignore_item = TRUE; + } + if (ignore_item) + continue; + /* Value passed as a byte array rather than a string, because there are * no character encoding guarantees with DHCP, and D-Bus requires * strings to be UTF-8.