diff libpurple/protocols/yahoo/libymsg.c @ 30758:06d8de5dd53c

yahoo: Avoid misuse of purple_normalize purple_normalize returns a pointer into a static buffer, so calling it twice in the arguments to another function is bad. (It was OK in this case, since the two calls were identical, but let's avoid bad idioms)
author Paul Aurich <paul@darkrain42.org>
date Sun, 01 Aug 2010 20:21:20 +0000
parents 3ae0814ae727
children 8dc749893b7b 7c871249318b
line wrap: on
line diff
--- a/libpurple/protocols/yahoo/libymsg.c	Sun Aug 01 03:23:24 2010 +0000
+++ b/libpurple/protocols/yahoo/libymsg.c	Sun Aug 01 20:21:20 2010 +0000
@@ -2702,6 +2702,7 @@
 	PurpleAccount *account;
 	YahooData *yd = gc->proto_data;
 	struct yahoo_p2p_data *p2p_data;
+	const char *norm_username;
 
 	f = yahoo_friend_find(gc, who);
 	account = purple_connection_get_account(gc);
@@ -2734,10 +2735,11 @@
 	sprintf(temp_str, "%d", ip);
 	base64_ip = purple_base64_encode( (guchar *)temp_str, strlen(temp_str) );
 
+	norm_username = purple_normalize(account, purple_account_get_username(account));
 	pkt = yahoo_packet_new(YAHOO_SERVICE_PEERTOPEER, YAHOO_STATUS_AVAILABLE, 0);
 	yahoo_packet_hash(pkt, "sssissis",
-		1, purple_normalize(account, purple_account_get_username(account)),
-		4, purple_normalize(account, purple_account_get_username(account)),
+		1, norm_username,
+		4, norm_username,
 		12, base64_ip,	/* base64 encode ip */
 		61, 0,		/* To-do : figure out what is 61 for?? */
 		2, "",