RT2210: Add missing EVP_cleanup to example
[oweals/openssl.git] / crypto / pem / pem_lib.c
index 5a421fc4b6ae817ea79c75fed04d035a5270bc62..2d328b4d36c4b997a3ab716f82006caca00f007f 100644 (file)
@@ -236,6 +236,9 @@ static int check_pem(const char *nm, const char *name)
                        }
                return 0;
                }
+       /* If reading DH parameters handle X9.42 DH format too */
+       if(!strcmp(nm,PEM_STRING_DHXPARAMS) &&
+               !strcmp(name,PEM_STRING_DHPARAMS)) return 1;
 
        /* Permit older strings */
 
@@ -477,8 +480,9 @@ int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *plen,
        EVP_CIPHER_CTX_cleanup(&ctx);
        OPENSSL_cleanse((char *)buf,sizeof(buf));
        OPENSSL_cleanse((char *)key,sizeof(key));
-       j+=i;
-       if (!o)
+       if (o)
+               j+=i;
+       else
                {
                PEMerr(PEM_F_PEM_DO_HEADER,PEM_R_BAD_DECRYPT);
                return(0);
@@ -573,8 +577,8 @@ static int load_iv(char **fromp, unsigned char *to, int num)
        }
 
 #ifndef OPENSSL_NO_FP_API
-int PEM_write(FILE *fp, char *name, char *header, unsigned char *data,
-            long len)
+int PEM_write(FILE *fp, const char *name, const char *header,
+             const unsigned char *data, long len)
         {
         BIO *b;
         int ret;
@@ -591,8 +595,8 @@ int PEM_write(FILE *fp, char *name, char *header, unsigned char *data,
         }
 #endif
 
-int PEM_write_bio(BIO *bp, const char *name, char *header, unsigned char *data,
-            long len)
+int PEM_write_bio(BIO *bp, const char *name, const char *header,
+                 const unsigned char *data, long len)
        {
        int nlen,n,i,j,outl;
        unsigned char *buf = NULL;