Mercurial > pidgin
changeset 31885:ff8ab76da6bb
Remove ISO10126 padding when decrypting an incoming transport-encrypted message.
author | andrew.victor@mxit.com |
---|---|
date | Sat, 13 Aug 2011 17:11:59 +0000 |
parents | 9ad5fcde4af4 |
children | 4bf9b7cf7810 |
files | libpurple/protocols/mxit/cipher.c |
diffstat | 1 files changed, 8 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/mxit/cipher.c Sat Aug 13 16:29:21 2011 +0000 +++ b/libpurple/protocols/mxit/cipher.c Sat Aug 13 17:11:59 2011 +0000 @@ -149,7 +149,6 @@ Decrypt( (unsigned char*) raw_message + i, (unsigned char*) exkey, (unsigned char*) block ); g_string_append_len( decoded, block, 16 ); } - g_free( raw_message ); purple_debug_info( MXIT_PLUGIN_ID, "decrypted: '%s'\n", decoded->str ); @@ -159,10 +158,16 @@ g_string_free( decoded, TRUE ); return NULL; /* message could not be decoded */ } - g_string_erase( decoded, 0, strlen( SECRET_HEADER ) ); /* remove header */ /* remove ISO10126 padding */ -// TODO + { + /* last byte indicates the number of padding bytes */ + unsigned int padding = decoded->str[decoded->len - 1]; + g_string_truncate( decoded, decoded->len - padding ); + } + + /* remove encryption header */ + g_string_erase( decoded, 0, strlen( SECRET_HEADER ) ); return g_string_free( decoded, FALSE ); }