diff options
Diffstat (limited to 'storage_xml.c')
| -rw-r--r-- | storage_xml.c | 15 | 
1 files changed, 9 insertions, 6 deletions
| diff --git a/storage_xml.c b/storage_xml.c index 00fca425..97379b29 100644 --- a/storage_xml.c +++ b/storage_xml.c @@ -131,7 +131,8 @@ static void xml_start_element( GMarkupParseContext *ctx, const gchar *element_na  	else if( g_strcasecmp( element_name, "account" ) == 0 )  	{  		char *protocol, *handle, *server, *password = NULL, *autoconnect; -		char *pass_b64 = NULL, *pass_rc4 = NULL; +		char *pass_b64 = NULL; +		unsigned char *pass_rc4 = NULL;  		int pass_len;  		struct prpl *prpl = NULL; @@ -151,8 +152,9 @@ static void xml_start_element( GMarkupParseContext *ctx, const gchar *element_na  			g_set_error( error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT,  			             "Unknown protocol: %s", protocol );  		else if( ( pass_len = base64_decode( pass_b64, (unsigned char**) &pass_rc4 ) ) && -		                rc4_decode( (unsigned char*) pass_rc4, pass_len, -		                            (unsigned char**) &password, xd->given_pass ) ) +		                rc4_decode( pass_rc4, pass_len, +		                            &password,  +									xd->given_pass ) )  		{  			xd->current_account = account_add( irc, prpl, handle, password );  			if( server ) @@ -409,7 +411,7 @@ static storage_status_t xml_save( irc_t *irc, int overwrite )  	md5_append( &md5_state, pass_md5 + 16, 5 ); /* Add the salt. */  	md5_finish( &md5_state, pass_md5 );  	/* Save the hash in base64-encoded form. */ -	pass_buf = base64_encode( (char*) pass_md5, 21 ); +	pass_buf = base64_encode( pass_md5, 21 );  	if( !xml_printf( fd, 0, "<user nick=\"%s\" password=\"%s\" version=\"%d\">\n", irc->nick, pass_buf, XML_FORMAT_VERSION ) )  		goto write_error; @@ -423,10 +425,11 @@ static storage_status_t xml_save( irc_t *irc, int overwrite )  	for( acc = irc->accounts; acc; acc = acc->next )  	{ -		char *pass_rc4, *pass_b64; +		unsigned char *pass_rc4; +		char *pass_b64;  		int pass_len; -		pass_len = rc4_encode( (unsigned char*) acc->pass, strlen( acc->pass ), (unsigned char**) &pass_rc4, irc->password ); +		pass_len = rc4_encode( acc->pass, strlen( acc->pass ), (unsigned char**) &pass_rc4, irc->password );  		pass_b64 = base64_encode( pass_rc4, pass_len );  		g_free( pass_rc4 ); | 
