changeset 31446:1a248102e437

Send * as our local hostname for the USER message at signon. This value is ignored by most servers anyway, and could disclose location information for users connecting via Tor, through VPNs, or via other proxying systems. References #8322
author Ethan Blanton <elb@pidgin.im>
date Sun, 03 Apr 2011 20:21:22 +0000
parents 0123005d0fb8
children 1ae16c9b2164
files libpurple/protocols/irc/irc.c
diffstat 1 files changed, 2 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/libpurple/protocols/irc/irc.c	Sat Apr 02 18:03:54 2011 +0000
+++ b/libpurple/protocols/irc/irc.c	Sun Apr 03 20:21:22 2011 +0000
@@ -403,8 +403,7 @@
 
 static gboolean do_login(PurpleConnection *gc) {
 	char *buf, *tmp = NULL;
-	char *hostname, *server;
-	const char *hosttmp;
+	char *server;
 	const char *username, *realname;
 	struct irc_conn *irc = gc->proto_data;
 	const char *pass = purple_connection_get_password(gc);
@@ -432,17 +431,6 @@
 		}
 	}
 
-	hosttmp = purple_get_host_name();
-	if (*hosttmp == ':') {
-		/* This is either an IPv6 address, or something which
-		 * doesn't belong here.  Either way, we need to escape
-		 * it. */
-		hostname = g_strdup_printf("0%s", hosttmp);
-	} else {
-		/* Ugly, I know. */
-		hostname = g_strdup(hosttmp);
-	}
-
 	if (*irc->server == ':') {
 		/* Same as hostname, above. */
 		server = g_strdup_printf("0%s", irc->server);
@@ -450,10 +438,9 @@
 		server = g_strdup(irc->server);
 	}
 
-	buf = irc_format(irc, "vvvv:", "USER", tmp ? tmp : username, hostname, server,
+	buf = irc_format(irc, "vvvv:", "USER", tmp ? tmp : username, "*", server,
 	                 strlen(realname) ? realname : IRC_DEFAULT_ALIAS);
 	g_free(tmp);
-	g_free(hostname);
 	g_free(server);
 	if (irc_send(irc, buf) < 0) {
 		g_free(buf);