diff options
Diffstat (limited to 'crypto/heimdal/lib/krb5/crypto-arcfour.c')
-rw-r--r-- | crypto/heimdal/lib/krb5/crypto-arcfour.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/crypto/heimdal/lib/krb5/crypto-arcfour.c b/crypto/heimdal/lib/krb5/crypto-arcfour.c index 7f7e21d0d22c..9a71d53f6542 100644 --- a/crypto/heimdal/lib/krb5/crypto-arcfour.c +++ b/crypto/heimdal/lib/krb5/crypto-arcfour.c @@ -129,7 +129,7 @@ ARCFOUR_subencrypt(krb5_context context, unsigned usage, void *ivec) { - EVP_CIPHER_CTX ctx; + EVP_CIPHER_CTX *ctx; struct _krb5_checksum_type *c = _krb5_find_checksum (CKSUMTYPE_RSA_MD5); Checksum k1_c, k2_c, k3_c, cksum; struct _krb5_key_data ke; @@ -176,11 +176,13 @@ ARCFOUR_subencrypt(krb5_context context, if (ret) krb5_abortx(context, "hmac failed"); - EVP_CIPHER_CTX_init(&ctx); + ctx = EVP_CIPHER_CTX_new(); + if (ctx == NULL) + krb5_abortx(context, "malloc failed"); - EVP_CipherInit_ex(&ctx, EVP_rc4(), NULL, k3_c.checksum.data, NULL, 1); - EVP_Cipher(&ctx, cdata + 16, cdata + 16, len - 16); - EVP_CIPHER_CTX_cleanup(&ctx); + EVP_CipherInit_ex(ctx, EVP_rc4(), NULL, k3_c.checksum.data, NULL, 1); + EVP_Cipher(ctx, cdata + 16, cdata + 16, len - 16); + EVP_CIPHER_CTX_free(ctx); memset (k1_c_data, 0, sizeof(k1_c_data)); memset (k2_c_data, 0, sizeof(k2_c_data)); @@ -196,7 +198,7 @@ ARCFOUR_subdecrypt(krb5_context context, unsigned usage, void *ivec) { - EVP_CIPHER_CTX ctx; + EVP_CIPHER_CTX *ctx; struct _krb5_checksum_type *c = _krb5_find_checksum (CKSUMTYPE_RSA_MD5); Checksum k1_c, k2_c, k3_c, cksum; struct _krb5_key_data ke; @@ -234,10 +236,12 @@ ARCFOUR_subdecrypt(krb5_context context, if (ret) krb5_abortx(context, "hmac failed"); - EVP_CIPHER_CTX_init(&ctx); - EVP_CipherInit_ex(&ctx, EVP_rc4(), NULL, k3_c.checksum.data, NULL, 0); - EVP_Cipher(&ctx, cdata + 16, cdata + 16, len - 16); - EVP_CIPHER_CTX_cleanup(&ctx); + ctx = EVP_CIPHER_CTX_new(); + if (ctx == NULL) + krb5_abortx(context, "malloc failed"); + EVP_CipherInit_ex(ctx, EVP_rc4(), NULL, k3_c.checksum.data, NULL, 0); + EVP_Cipher(ctx, cdata + 16, cdata + 16, len - 16); + EVP_CIPHER_CTX_free(ctx); ke.key = &kb; kb.keyvalue = k2_c.checksum; |