diff options
Diffstat (limited to 'ext/openssl')
-rw-r--r-- | ext/openssl/ossl_cipher.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/ext/openssl/ossl_cipher.c b/ext/openssl/ossl_cipher.c index cb5fee6aee..221588fdb9 100644 --- a/ext/openssl/ossl_cipher.c +++ b/ext/openssl/ossl_cipher.c @@ -224,7 +224,8 @@ ossl_cipher_update(VALUE self, VALUE data) StringValue(data); in = RSTRING(data)->ptr; - in_len = RSTRING(data)->len; + if ((in_len = RSTRING(data)->len) == 0) + rb_raise(rb_eArgError, "data must not be empty"); GetCipher(self, ctx); str = rb_str_new(0, in_len+EVP_CIPHER_CTX_block_size(ctx)); if (!EVP_CipherUpdate(ctx, RSTRING(str)->ptr, &out_len, in, in_len)) |