Null-terminate decrypted passwords

The decrypted passwords returned by `decrypt_password` are now properly
null-terminated.
This commit is contained in:
Markus Mäkelä
2017-09-11 23:59:59 +03:00
parent 7a8a12dd28
commit 4a42ddfe5f

View File

@ -382,7 +382,7 @@ decrypt_password(const char *crypt)
enlen = strlen(crypt) / 2; enlen = strlen(crypt) / 2;
gw_hex2bin(encrypted, crypt, strlen(crypt)); gw_hex2bin(encrypted, crypt, strlen(crypt));
if ((plain = (unsigned char *) MXS_MALLOC(80)) == NULL) if ((plain = (unsigned char *) MXS_MALLOC(enlen + 1)) == NULL)
{ {
MXS_FREE(keys); MXS_FREE(keys);
return NULL; return NULL;
@ -391,6 +391,7 @@ decrypt_password(const char *crypt)
AES_set_decrypt_key(keys->enckey, 8 * MAXSCALE_KEYLEN, &aeskey); AES_set_decrypt_key(keys->enckey, 8 * MAXSCALE_KEYLEN, &aeskey);
AES_cbc_encrypt(encrypted, plain, enlen, &aeskey, keys->initvector, AES_DECRYPT); AES_cbc_encrypt(encrypted, plain, enlen, &aeskey, keys->initvector, AES_DECRYPT);
plain[enlen] = '\0';
MXS_FREE(keys); MXS_FREE(keys);
return (char *) plain; return (char *) plain;