--- gnome-session-2.17.2/gnome-session/gsm-proxy.c.http-proxy 2006-11-27 00:36:17.000000000 -0500 +++ gnome-session-2.17.2/gnome-session/gsm-proxy.c 2006-11-27 00:36:47.000000000 -0500 @@ -38,7 +38,7 @@ gsm_set_up_legacy_proxy_environment (voi { static gboolean run_before = FALSE; gboolean use_proxy, use_authentication; - char *host, *user_name, *password, *http_proxy; + char *host, *http_proxy; gint port; GConfClient *gconf_client; @@ -62,52 +62,34 @@ gsm_set_up_legacy_proxy_environment (voi return; } + use_authentication = gconf_client_get_bool (gconf_client, HTTP_PROXY_AUTHENTICATION_KEY, NULL); + + /* we don't bother if a username/password are set since keeping the password + * in an environment variable has security ramifications + */ + if (use_authentication) + { + g_unsetenv ("http_proxy"); + return; + } + host = gconf_client_get_string (gconf_client, HTTP_PROXY_HOST_KEY, NULL); if (host == NULL || host[0] == '\0') { + g_free (host); g_unsetenv ("http_proxy"); return; } port = gconf_client_get_int (gconf_client, HTTP_PROXY_PORT_KEY, NULL); - use_authentication = gconf_client_get_bool (gconf_client, HTTP_PROXY_AUTHENTICATION_KEY, NULL); - - user_name = NULL; - password = NULL; - if (use_authentication) - { - user_name = gconf_client_get_string (gconf_client, HTTP_PROXY_USER_NAME_KEY, - NULL); - if (user_name != NULL && user_name[0] == '\0') - { - g_free (user_name); - user_name = NULL; - } - else - password = gconf_client_get_string (gconf_client, HTTP_PROXY_PASSWORD_KEY, - NULL); - } - if (port <= 0) - http_proxy = g_strdup_printf ("http://%s%s%s%s%s", - user_name != NULL? user_name : "", - user_name != NULL && password != NULL? "@" : "", - user_name != NULL && password != NULL? password : "", - user_name != NULL? ":" : "", - host); + http_proxy = g_strdup_printf ("http://%s", host); else - http_proxy = g_strdup_printf ("http://%s%s%s%s%s:%d", - user_name != NULL? user_name : "", - user_name != NULL && password != NULL? "@" : "", - user_name != NULL && password != NULL? password : "", - user_name != NULL? ":" : "", - host, port); + http_proxy = g_strdup_printf ("http://%s:%d", host, port); g_setenv ("http_proxy", http_proxy, TRUE); g_free (http_proxy); - g_free (password); - g_free (user_name); g_free (host); } --- gnome-session-2.17.2/gnome-session/headers.h.http-proxy 2006-10-26 21:19:45.000000000 -0400 +++ gnome-session-2.17.2/gnome-session/headers.h 2006-11-27 00:36:47.000000000 -0500 @@ -78,8 +78,6 @@ #define HTTP_PROXY_PREFIX "/system/http_proxy" #define HTTP_PROXY_KEY HTTP_PROXY_PREFIX "/use_http_proxy" #define HTTP_PROXY_AUTHENTICATION_KEY HTTP_PROXY_PREFIX "/use_authentication" -#define HTTP_PROXY_USER_NAME_KEY HTTP_PROXY_PREFIX "/authentication_user" -#define HTTP_PROXY_PASSWORD_KEY HTTP_PROXY_PREFIX "/authentication_password" #define HTTP_PROXY_HOST_KEY HTTP_PROXY_PREFIX "/host" #define HTTP_PROXY_PORT_KEY HTTP_PROXY_PREFIX "/port"