--- a/libpurple/protocols/yahoo/yahoo_picture.c Sat Jan 18 16:30:55 2014 -0800 +++ b/libpurple/protocols/yahoo/yahoo_picture.c Sun Jan 19 11:30:49 2014 -0800 @@ -84,10 +84,20 @@ switch (pair->key) { case 1: case 4: - who = pair->value; + if (g_utf8_validate(pair->value, -1, NULL)) { + who = pair->value; + } else { + purple_debug_warning("yahoo", "yahoo_process_picture " + "got non-UTF-8 string for key %d\n", pair->key); + } break; case 5: - us = pair->value; + if (g_utf8_validate(pair->value, -1, NULL)) { + us = pair->value; + } else { + purple_debug_warning("yahoo", "yahoo_process_picture " + "got non-UTF-8 string for key %d\n", pair->key); + } break; case 13: { int tmp; @@ -100,7 +110,12 @@ break; } case 20: - url = pair->value; + if (g_utf8_validate(pair->value, -1, NULL)) { + url = pair->value; + } else { + purple_debug_warning("yahoo", "yahoo_process_picture " + "got non-UTF-8 string for key %d\n", pair->key); + } break; case 192: checksum = strtol(pair->value, NULL, 10); @@ -154,7 +169,12 @@ switch (pair->key) { case 4: - who = pair->value; + if (g_utf8_validate(pair->value, -1, NULL)) { + who = pair->value; + } else { + purple_debug_warning("yahoo", "yahoo_process_picture_checksum " + "got non-UTF-8 string for key %d\n", pair->key); + } break; case 5: /* us */ @@ -197,7 +217,12 @@ /* filename on our computer. */ break; case 20: /* url at yahoo */ - url = pair->value; + if (g_utf8_validate(pair->value, -1, NULL)) { + url = pair->value; + } else { + purple_debug_warning("yahoo", "yahoo_process_picture_upload " + "got non-UTF-8 string for key %d\n", pair->key); + } case 38: /* timestamp */ break; } @@ -225,7 +250,12 @@ switch (pair->key) { case 4: - who = pair->value; + if (g_utf8_validate(pair->value, -1, NULL)) { + who = pair->value; + } else { + purple_debug_warning("yahoo", "yahoo_process_avatar_upload " + "got non-UTF-8 string for key %d\n", pair->key); + } break; case 5: /* us */