Mercurial > pidgin
comparison src/proxy.c @ 12765:29594d4ccbb1
[gaim-migrate @ 15112]
sf patch #1398385, from Thomas Butter
"gaim_cipher_context_digest(ctx, sizeof(response), response, NULL);
sizeof(response) is always 4 (its a pointer) and thus digest fails.
The patch also cleans up a bit in that function."
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sun, 08 Jan 2006 20:54:57 +0000 |
parents | ef1a954512bc |
children | ac41924f8bb0 |
comparison
equal
deleted
inserted
replaced
12764:657895c5f3f2 | 12765:29594d4ccbb1 |
---|---|
1556 GaimCipherContext *ctx; | 1556 GaimCipherContext *ctx; |
1557 int i; | 1557 int i; |
1558 unsigned char Kxoripad[65]; | 1558 unsigned char Kxoripad[65]; |
1559 unsigned char Kxoropad[65]; | 1559 unsigned char Kxoropad[65]; |
1560 int pwlen; | 1560 int pwlen; |
1561 char * pwinput; | |
1562 guchar md5buf[16]; | |
1563 | 1561 |
1564 cipher = gaim_ciphers_find_cipher("md5"); | 1562 cipher = gaim_ciphers_find_cipher("md5"); |
1565 ctx = gaim_cipher_context_new(cipher, NULL); | 1563 ctx = gaim_cipher_context_new(cipher, NULL); |
1566 | 1564 |
1567 pwinput=(char *)passwd; | 1565 memset(Kxoripad,0,sizeof(Kxoripad)); |
1566 memset(Kxoropad,0,sizeof(Kxoropad)); | |
1567 | |
1568 pwlen=strlen(passwd); | 1568 pwlen=strlen(passwd); |
1569 if (pwlen>64) { | 1569 if (pwlen>64) { |
1570 gaim_cipher_context_append(ctx, (const guchar *)passwd, strlen(passwd)); | 1570 gaim_cipher_context_append(ctx, (const guchar *)passwd, strlen(passwd)); |
1571 gaim_cipher_context_digest(ctx, sizeof(md5buf), md5buf, NULL); | 1571 gaim_cipher_context_digest(ctx, sizeof(Kxoripad), Kxoripad, NULL); |
1572 pwinput=(char *)md5buf; | |
1573 pwlen=16; | 1572 pwlen=16; |
1574 } | 1573 } else { |
1575 | 1574 memcpy(Kxoripad, passwd, pwlen); |
1576 memset(Kxoripad,0,sizeof(Kxoripad)); | 1575 } |
1577 memset(Kxoropad,0,sizeof(Kxoropad)); | 1576 memcpy(Kxoropad,Kxoripad,pwlen); |
1578 memcpy(Kxoripad,pwinput,pwlen); | 1577 |
1579 memcpy(Kxoropad,pwinput,pwlen); | |
1580 for (i=0;i<64;i++) { | 1578 for (i=0;i<64;i++) { |
1581 Kxoripad[i]^=0x36; | 1579 Kxoripad[i]^=0x36; |
1582 Kxoropad[i]^=0x5c; | 1580 Kxoropad[i]^=0x5c; |
1583 } | 1581 } |
1584 | 1582 |
1588 gaim_cipher_context_digest(ctx, sizeof(Kxoripad), Kxoripad, NULL); | 1586 gaim_cipher_context_digest(ctx, sizeof(Kxoripad), Kxoripad, NULL); |
1589 | 1587 |
1590 gaim_cipher_context_reset(ctx, NULL); | 1588 gaim_cipher_context_reset(ctx, NULL); |
1591 gaim_cipher_context_append(ctx, Kxoropad, 64); | 1589 gaim_cipher_context_append(ctx, Kxoropad, 64); |
1592 gaim_cipher_context_append(ctx, Kxoripad, 16); | 1590 gaim_cipher_context_append(ctx, Kxoripad, 16); |
1593 gaim_cipher_context_digest(ctx, sizeof(response), response, NULL); | 1591 gaim_cipher_context_digest(ctx, 16, response, NULL); |
1594 | 1592 |
1595 gaim_cipher_context_destroy(ctx); | 1593 gaim_cipher_context_destroy(ctx); |
1596 } | 1594 } |
1597 | 1595 |
1598 static void | 1596 static void |