Constify version strings and some structures.
[openssl.git] / crypto / evp / evp_enc.c
index e8456322395e55694d8a60201b87baa1cc01e0dd..a1904993bf768ee37242eab523022e7aee451925 100644 (file)
@@ -66,7 +66,7 @@
 #endif
 #include "evp_locl.h"
 
-const char *EVP_version="EVP" OPENSSL_VERSION_PTEXT;
+const char EVP_version[]="EVP" OPENSSL_VERSION_PTEXT;
 
 void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *ctx)
        {
@@ -74,6 +74,13 @@ void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *ctx)
        /* ctx->cipher=NULL; */
        }
 
+EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void)
+       {
+       EVP_CIPHER_CTX *ctx=OPENSSL_malloc(sizeof *ctx);
+       if (ctx)
+               EVP_CIPHER_CTX_init(ctx);
+       return ctx;
+       }
 
 int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
             const unsigned char *key, const unsigned char *iv, int enc)
@@ -449,7 +456,7 @@ int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl)
                        }
                OPENSSL_assert(b <= sizeof ctx->final);
                n=ctx->final[b-1];
-               if (n > (int)b)
+               if (n == 0 || n > (int)b)
                        {
                        EVPerr(EVP_F_EVP_DECRYPTFINAL_EX,EVP_R_BAD_DECRYPT);
                        return(0);
@@ -472,6 +479,15 @@ int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl)
        return(1);
        }
 
+void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *ctx)
+       {
+       if (ctx)
+               {
+               EVP_CIPHER_CTX_cleanup(ctx);
+               OPENSSL_free(ctx);
+               }
+       }
+
 int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *c)
        {
        if (c->cipher != NULL)