comparison libpurple/protocols/myspace/myspace.c @ 24914:1981b04de92e

MySpace? passwords are truncated to 10 characters. Their website doesn't let you enter a password longer than that in the change password interface, but it does let you enter more than 10 characters when logging in (and they truncate it).
author Mark Doliner <mark@kingant.net>
date Tue, 06 Jan 2009 01:25:17 +0000
parents c6cadb7bdcf7
children b15168f2b7ee 68265bcc8814
comparison
equal deleted inserted replaced
24913:702947c56bfa 24914:1981b04de92e
531 PurpleCipher *sha1; 531 PurpleCipher *sha1;
532 PurpleCipherContext *rc4; 532 PurpleCipherContext *rc4;
533 533
534 guchar hash_pw[HASH_SIZE]; 534 guchar hash_pw[HASH_SIZE];
535 guchar key[HASH_SIZE]; 535 guchar key[HASH_SIZE];
536 gchar *password_utf16le, *password_utf8_lc; 536 gchar *password_truncated, *password_utf16le, *password_utf8_lc;
537 GString *data; 537 GString *data;
538 guchar *data_out; 538 guchar *data_out;
539 size_t data_out_len; 539 size_t data_out_len;
540 gsize conv_bytes_read, conv_bytes_written; 540 gsize conv_bytes_read, conv_bytes_written;
541 GError *conv_error; 541 GError *conv_error;
546 g_return_val_if_fail(nonce != NULL, NULL); 546 g_return_val_if_fail(nonce != NULL, NULL);
547 g_return_val_if_fail(email != NULL, NULL); 547 g_return_val_if_fail(email != NULL, NULL);
548 g_return_val_if_fail(password != NULL, NULL); 548 g_return_val_if_fail(password != NULL, NULL);
549 g_return_val_if_fail(response_len != NULL, NULL); 549 g_return_val_if_fail(response_len != NULL, NULL);
550 550
551 /*
552 * Truncate password to 10 characters. Their "change password"
553 * web page doesn't let you enter more than 10 characters, but you
554 * can enter more than 10 when logging in on myspace.com and they
555 * truncate it.
556 */
557 password_truncated = g_strndup(password, 10);
558
551 /* Convert password to lowercase (required for passwords containing 559 /* Convert password to lowercase (required for passwords containing
552 * uppercase characters). MySpace passwords are lowercase, 560 * uppercase characters). MySpace passwords are lowercase,
553 * see ticket #2066. */ 561 * see ticket #2066. */
554 password_utf8_lc = g_utf8_strdown(password, -1); 562 password_utf8_lc = g_utf8_strdown(password_truncated, -1);
563 g_free(password_truncated);
555 564
556 /* Convert ASCII password to UTF16 little endian */ 565 /* Convert ASCII password to UTF16 little endian */
557 purple_debug_info("msim", "converting password to UTF-16LE\n"); 566 purple_debug_info("msim", "converting password to UTF-16LE\n");
558 conv_error = NULL; 567 conv_error = NULL;
559 password_utf16le = g_convert(password_utf8_lc, -1, "UTF-16LE", "UTF-8", 568 password_utf16le = g_convert(password_utf8_lc, -1, "UTF-16LE", "UTF-8",
560 &conv_bytes_read, &conv_bytes_written, &conv_error); 569 &conv_bytes_read, &conv_bytes_written, &conv_error);
561 g_free(password_utf8_lc); 570 g_free(password_utf8_lc);
562
563 g_return_val_if_fail(conv_bytes_read == strlen(password), NULL);
564 571
565 if (conv_error != NULL) { 572 if (conv_error != NULL) {
566 purple_debug_error("msim", 573 purple_debug_error("msim",
567 "g_convert password UTF8->UTF16LE failed: %s", 574 "g_convert password UTF8->UTF16LE failed: %s",
568 conv_error->message); 575 conv_error->message);