diff libpurple/protocols/oscar/oscar.c @ 25536:937d832f4d7f

Shaun Lindsay at Meebo tracked down a bug where this function reads past the end of the string if the input parameter ends in a space
author Mark Doliner <mark@kingant.net>
date Thu, 26 Feb 2009 03:44:58 +0000
parents a46e527d1473
children 7f552614ec8a 4b8c4870b13a
line wrap: on
line diff
--- a/libpurple/protocols/oscar/oscar.c	Wed Feb 25 23:48:26 2009 +0000
+++ b/libpurple/protocols/oscar/oscar.c	Thu Feb 26 03:44:58 2009 +0000
@@ -6818,11 +6818,13 @@
 	g_return_val_if_fail(str != NULL, NULL);
 
 	/* copy str to buf and skip all blanks */
-	for (i=0, j=0; str[j] && i < BUF_LEN - 1; i++, j++)
-	{
-		while (str[j] == ' ')
-			j++;
-		buf[i] = str[j];
+	i = 0;
+	for (j = 0; str[j]; j++) {
+		if (str[j] != ' ') {
+			buf[i++] = str[j];
+			if (i >= BUF_LEN - 1)
+				break;
+		}
 	}
 	buf[i] = '\0';