Don't return stuff from void functions.
diff --git a/crypto/asn1/a_bitstr.c b/crypto/asn1/a_bitstr.c
index a441cde..b36d620 100644
--- a/crypto/asn1/a_bitstr.c
+++ b/crypto/asn1/a_bitstr.c
@@ -64,7 +64,7 @@
 { return M_ASN1_BIT_STRING_new(); }
 
 void ASN1_BIT_STRING_free(ASN1_BIT_STRING *x)
-{ return M_ASN1_BIT_STRING_free(x); }
+{ M_ASN1_BIT_STRING_free(x); }
 
 int ASN1_BIT_STRING_set(ASN1_BIT_STRING *x, unsigned char *d, int len)
 { return M_ASN1_BIT_STRING_set(x, d, len); }
diff --git a/crypto/asn1/a_bmp.c b/crypto/asn1/a_bmp.c
index eba61a7..d9ac5a0 100644
--- a/crypto/asn1/a_bmp.c
+++ b/crypto/asn1/a_bmp.c
@@ -64,7 +64,7 @@
 { return M_ASN1_BMPSTRING_new(); }
 
 void ASN1_BMPSTRING_free(ASN1_BMPSTRING *x)
-{ return M_ASN1_BMPSTRING_free(x); }
+{ M_ASN1_BMPSTRING_free(x); }
 
 int i2d_ASN1_BMPSTRING(ASN1_BMPSTRING *a, unsigned char **pp)
 	{
diff --git a/crypto/asn1/a_enum.c b/crypto/asn1/a_enum.c
index 32cfe5b..61349ed 100644
--- a/crypto/asn1/a_enum.c
+++ b/crypto/asn1/a_enum.c
@@ -69,7 +69,7 @@
 { return M_ASN1_ENUMERATED_new(); }
 
 void ASN1_ENUMERATED_free(ASN1_ENUMERATED *x)
-{ return M_ASN1_ENUMERATED_free(x); }
+{ M_ASN1_ENUMERATED_free(x); }
 
 int i2d_ASN1_ENUMERATED(ASN1_ENUMERATED *a, unsigned char **pp)
 	{
diff --git a/crypto/asn1/a_gentm.c b/crypto/asn1/a_gentm.c
index d5b8bd9..8406217 100644
--- a/crypto/asn1/a_gentm.c
+++ b/crypto/asn1/a_gentm.c
@@ -67,7 +67,7 @@
 { return M_ASN1_GENERALIZEDTIME_new(); }
 
 void ASN1_GENERALIZEDTIME_free(ASN1_GENERALIZEDTIME *x)
-{ return M_ASN1_GENERALIZEDTIME_free(x); }
+{ M_ASN1_GENERALIZEDTIME_free(x); }
 
 int i2d_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME *a, unsigned char **pp)
 	{
diff --git a/crypto/asn1/a_int.c b/crypto/asn1/a_int.c
index de40623..7ed99eb 100644
--- a/crypto/asn1/a_int.c
+++ b/crypto/asn1/a_int.c
@@ -64,7 +64,7 @@
 { return M_ASN1_INTEGER_new();}
 
 void ASN1_INTEGER_free(ASN1_INTEGER *x)
-{ return M_ASN1_INTEGER_free(x);}
+{ M_ASN1_INTEGER_free(x);}
 
 ASN1_INTEGER *ASN1_INTEGER_dup(ASN1_INTEGER *x)
 { return M_ASN1_INTEGER_dup(x);}
diff --git a/crypto/asn1/a_mbstr.c b/crypto/asn1/a_mbstr.c
index b83e3ee..260c1af 100644
--- a/crypto/asn1/a_mbstr.c
+++ b/crypto/asn1/a_mbstr.c
@@ -87,8 +87,8 @@
 	ASN1_STRING *dest;
 	unsigned char *p;
 	int nchar;
-	int (*cpyfunc)(unsigned long value, void *in) = NULL;
-	if(len == -1) len = strlen(in);
+	int (*cpyfunc)(unsigned long value, void *in_) = NULL;
+	if(len == -1) len = strlen((const char *)in);
 
 	/* First do a string check and work out the number of characters */
 	switch(inform) {
diff --git a/crypto/asn1/a_octet.c b/crypto/asn1/a_octet.c
index bd6264e..2586f43 100644
--- a/crypto/asn1/a_octet.c
+++ b/crypto/asn1/a_octet.c
@@ -64,7 +64,7 @@
 { return M_ASN1_OCTET_STRING_new(); }
 
 void ASN1_OCTET_STRING_free(ASN1_OCTET_STRING *x)
-{ return M_ASN1_OCTET_STRING_free(x); }
+{ M_ASN1_OCTET_STRING_free(x); }
 
 ASN1_OCTET_STRING *ASN1_OCTET_STRING_dup(ASN1_OCTET_STRING *x)
 { return M_ASN1_OCTET_STRING_dup(x); }
diff --git a/crypto/asn1/a_print.c b/crypto/asn1/a_print.c
index 21bdcdb..9a965d3 100644
--- a/crypto/asn1/a_print.c
+++ b/crypto/asn1/a_print.c
@@ -64,7 +64,7 @@
 { return M_ASN1_IA5STRING_new();}
 
 void ASN1_IA5STRING_free(ASN1_IA5STRING *x)
-{ return M_ASN1_IA5STRING_free(x);}
+{ M_ASN1_IA5STRING_free(x);}
 
 int i2d_ASN1_IA5STRING(ASN1_IA5STRING *a, unsigned char **pp)
 	{ return(M_i2d_ASN1_IA5STRING(a,pp)); }
@@ -77,7 +77,7 @@
 { return M_ASN1_T61STRING_new();}
 
 void ASN1_T61STRING_free(ASN1_T61STRING *x)
-{ return M_ASN1_T61STRING_free(x);}
+{ M_ASN1_T61STRING_free(x);}
 
 ASN1_T61STRING *d2i_ASN1_T61STRING(ASN1_T61STRING **a, unsigned char **pp,
 	     long l)
@@ -87,7 +87,7 @@
 { return M_ASN1_PRINTABLESTRING_new();}
 
 void ASN1_PRINTABLESTRING_free(ASN1_PRINTABLESTRING *x)
-{ return M_ASN1_PRINTABLESTRING_free(x);}
+{ M_ASN1_PRINTABLESTRING_free(x);}
 
 ASN1_PRINTABLESTRING *d2i_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING **a,
 	     unsigned char **pp, long l)
@@ -171,7 +171,7 @@
 { return M_DIRECTORYSTRING_new();}
 
 void DIRECTORYSTRING_free(ASN1_STRING *x)
-{ return M_DIRECTORYSTRING_free(x);}
+{ M_DIRECTORYSTRING_free(x);}
 
 int i2d_DIRECTORYSTRING(ASN1_STRING *a, unsigned char **pp)
 	{ return(M_i2d_DIRECTORYSTRING(a,pp)); }
@@ -184,7 +184,7 @@
 { return M_DISPLAYTEXT_new();}
 
 void DISPLAYTEXT_free(ASN1_STRING *x)
-{ return M_DISPLAYTEXT_free(x);}
+{ M_DISPLAYTEXT_free(x);}
 
 int i2d_DISPLAYTEXT(ASN1_STRING *a, unsigned char **pp)
 	{ return(M_i2d_DISPLAYTEXT(a,pp)); }
diff --git a/crypto/asn1/a_time.c b/crypto/asn1/a_time.c
index d1900f6..b193f1c 100644
--- a/crypto/asn1/a_time.c
+++ b/crypto/asn1/a_time.c
@@ -70,7 +70,7 @@
 { return M_ASN1_TIME_new(); }
 
 void ASN1_TIME_free(ASN1_TIME *x)
-{ return M_ASN1_TIME_free(x); }
+{ M_ASN1_TIME_free(x); }
 
 int i2d_ASN1_TIME(ASN1_TIME *a, unsigned char **pp)
 	{
diff --git a/crypto/asn1/a_utctm.c b/crypto/asn1/a_utctm.c
index ba34945..0756597 100644
--- a/crypto/asn1/a_utctm.c
+++ b/crypto/asn1/a_utctm.c
@@ -70,7 +70,7 @@
 { return M_ASN1_UTCTIME_new(); }
 
 void ASN1_UTCTIME_free(ASN1_UTCTIME *x)
-{ return M_ASN1_UTCTIME_free(x); }
+{ M_ASN1_UTCTIME_free(x); }
 
 int i2d_ASN1_UTCTIME(ASN1_UTCTIME *a, unsigned char **pp)
 	{
diff --git a/crypto/asn1/a_utf8.c b/crypto/asn1/a_utf8.c
index 16aab7f..45434be 100644
--- a/crypto/asn1/a_utf8.c
+++ b/crypto/asn1/a_utf8.c
@@ -64,7 +64,7 @@
 { return M_ASN1_UTF8STRING_new();}
 
 void ASN1_UTF8STRING_free(ASN1_UTF8STRING *x)
-{ return M_ASN1_UTF8STRING_free(x);}
+{ M_ASN1_UTF8STRING_free(x);}
 
 int i2d_ASN1_UTF8STRING(ASN1_UTF8STRING *a, unsigned char **pp)
 	{
diff --git a/crypto/asn1/a_vis.c b/crypto/asn1/a_vis.c
index 3bc3d79..5cfc080 100644
--- a/crypto/asn1/a_vis.c
+++ b/crypto/asn1/a_vis.c
@@ -64,7 +64,7 @@
 { return M_ASN1_VISIBLESTRING_new(); }
 
 void ASN1_VISIBLESTRING_free(ASN1_VISIBLESTRING *x)
-{ return M_ASN1_VISIBLESTRING_free(x); }
+{ M_ASN1_VISIBLESTRING_free(x); }
 
 int i2d_ASN1_VISIBLESTRING(ASN1_VISIBLESTRING *a, unsigned char **pp)
 	{