diff options
author | emboss <emboss@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-07-22 02:21:26 +0000 |
---|---|---|
committer | emboss <emboss@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-07-22 02:21:26 +0000 |
commit | 00a006511b4b46298ac6cdebbeabb48d65d94ae8 (patch) | |
tree | 18c64f421da9921efcbd8aca5d2f7514c6920a2c /ext/openssl/ossl_digest.c | |
parent | 84e835fe4a68586fcb17adc2a6140c737c83dd62 (diff) | |
download | ruby-00a006511b4b46298ac6cdebbeabb48d65d94ae8.tar.gz |
* ext/openssl/ossl_digest.c: Check return value of EVP_DigestInit_ex.
* ext/openssl/ossl_hmac.c: Check return value of HMAC_Init_ex.
Thanks, Jared Jennings, for the patch.
[ Ruby 1.9 - Bug #4944 ] [ruby-core:37670]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32606 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/openssl/ossl_digest.c')
-rw-r--r-- | ext/openssl/ossl_digest.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/ext/openssl/ossl_digest.c b/ext/openssl/ossl_digest.c index cb0cade1bf..ab165c4a84 100644 --- a/ext/openssl/ossl_digest.c +++ b/ext/openssl/ossl_digest.c @@ -68,7 +68,9 @@ ossl_digest_new(const EVP_MD *md) ret = ossl_digest_alloc(cDigest); GetDigest(ret, ctx); - EVP_DigestInit_ex(ctx, md, NULL); + if (EVP_DigestInit_ex(ctx, md, NULL) != 1) { + ossl_raise(eDigestError, "Digest initialization failed."); + } return ret; } @@ -122,7 +124,9 @@ ossl_digest_initialize(int argc, VALUE *argv, VALUE self) if (!NIL_P(data)) StringValue(data); GetDigest(self, ctx); - EVP_DigestInit_ex(ctx, md, NULL); + if (EVP_DigestInit_ex(ctx, md, NULL) != 1) { + ossl_raise(eDigestError, "Digest initialization failed."); + } if (!NIL_P(data)) return ossl_digest_update(self, data); return self; @@ -159,7 +163,9 @@ ossl_digest_reset(VALUE self) EVP_MD_CTX *ctx; GetDigest(self, ctx); - EVP_DigestInit_ex(ctx, EVP_MD_CTX_md(ctx), NULL); + if (EVP_DigestInit_ex(ctx, EVP_MD_CTX_md(ctx), NULL) != 1) { + ossl_raise(eDigestError, "Digest initialization failed."); + } return self; } |