Fix some warnings.
diff --git a/apps/ca.c b/apps/ca.c
index 291f164..b6d871d 100644
--- a/apps/ca.c
+++ b/apps/ca.c
@@ -226,7 +226,7 @@
 static int do_revoke(X509 *x509, CA_DB *db, int ext, char *extval);
 static int get_certificate_status(const char *ser_status, CA_DB *db);
 static int do_updatedb(CA_DB *db);
-static int check_time_format(char *str);
+static int check_time_format(const char *str);
 char *make_revocation_str(int rev_type, char *rev_arg);
 int make_revoked(X509_REVOKED *rev, const char *str);
 int old_entry_print(BIO *bp, ASN1_OBJECT *obj, ASN1_STRING *str);
@@ -2384,7 +2384,7 @@
 	return(1);
 	}
 
-static int check_time_format(char *str)
+static int check_time_format(const char *str)
 	{
 	ASN1_UTCTIME tm;
 
diff --git a/apps/cms.c b/apps/cms.c
index b757908..eb54a0d 100644
--- a/apps/cms.c
+++ b/apps/cms.c
@@ -124,7 +124,7 @@
 	char *engine=NULL;
 #endif
 	unsigned char *secret_key = NULL;
-	size_t secret_keylen;
+	size_t secret_keylen = 0;
 
 	X509_VERIFY_PARAM *vpm = NULL;
 
diff --git a/crypto/asn1/a_type.c b/crypto/asn1/a_type.c
index 90f1424..a45d2f9 100644
--- a/crypto/asn1/a_type.c
+++ b/crypto/asn1/a_type.c
@@ -87,7 +87,8 @@
 	{
 	if (!value || (type == V_ASN1_BOOLEAN))
 		{
-		ASN1_TYPE_set(a, type, (void *)value);
+		void *p = (void *)value;
+		ASN1_TYPE_set(a, type, p);
 		}
 	else if (type == V_ASN1_OBJECT)
 		{
diff --git a/crypto/cms/cms_asn1.c b/crypto/cms/cms_asn1.c
index b9521c9..d6363de 100644
--- a/crypto/cms/cms_asn1.c
+++ b/crypto/cms/cms_asn1.c
@@ -309,6 +309,8 @@
 	CMS_ContentInfo *cms;
 	if (pval)
 		cms = (CMS_ContentInfo *)*pval;
+	else
+		return 1;
 	switch(operation)
 		{
 
diff --git a/crypto/hmac/hm_pmeth.c b/crypto/hmac/hm_pmeth.c
index 6355a44..b5e4557 100644
--- a/crypto/hmac/hm_pmeth.c
+++ b/crypto/hmac/hm_pmeth.c
@@ -206,8 +206,9 @@
 		}
 	if (!strcmp(type, "key"))
 		{
+		void *p = (void *)value;
 		return pkey_hmac_ctrl(ctx, EVP_PKEY_CTRL_SET_MAC_KEY,
-				-1, (void *)value);
+				-1, p);
 		}
 	if (!strcmp(type, "hexkey"))
 		{