diff --git a/crypto/asn1/bio_asn1.c b/crypto/asn1/bio_asn1.c
index 38787a8..faea304 100644
--- a/crypto/asn1/bio_asn1.c
+++ b/crypto/asn1/bio_asn1.c
@@ -124,7 +124,7 @@
 				asn1_bio_state_t ex_state,
 				asn1_bio_state_t other_state);
 
-static BIO_METHOD methods_asn1=
+static const BIO_METHOD methods_asn1=
 	{
 	BIO_TYPE_ASN1,
 	"asn1",
@@ -138,7 +138,7 @@
 	asn1_bio_callback_ctrl,
 	};
 
-BIO_METHOD *BIO_f_asn1(void)
+const BIO_METHOD *BIO_f_asn1(void)
 	{
 	return(&methods_asn1);
 	}
diff --git a/crypto/asn1/charmap.pl b/crypto/asn1/charmap.pl
index cc800cc..71bc7b8 100644
--- a/crypto/asn1/charmap.pl
+++ b/crypto/asn1/charmap.pl
@@ -123,7 +123,7 @@
  * Mask of various character properties
  */
 
-static unsigned char char_type[] = {
+static const unsigned char char_type[] = {
 EOF
 
 for($i = 0; $i < 128; $i++) {
diff --git a/crypto/asn1/x_bignum.c b/crypto/asn1/x_bignum.c
index 7985235..f8c62fd 100644
--- a/crypto/asn1/x_bignum.c
+++ b/crypto/asn1/x_bignum.c
@@ -74,7 +74,7 @@
 static int bn_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype, const ASN1_ITEM *it);
 static int bn_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len, int utype, char *free_cont, const ASN1_ITEM *it);
 
-static ASN1_PRIMITIVE_FUNCS bignum_pf = {
+static const ASN1_PRIMITIVE_FUNCS bignum_pf = {
 	NULL, 0,
 	bn_new,
 	bn_free,
diff --git a/crypto/asn1/x_long.c b/crypto/asn1/x_long.c
index cb0dad1..a3f80ab 100644
--- a/crypto/asn1/x_long.c
+++ b/crypto/asn1/x_long.c
@@ -74,7 +74,7 @@
 static int long_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len, int utype, char *free_cont, const ASN1_ITEM *it);
 static int long_print(BIO *out, ASN1_VALUE **pval, const ASN1_ITEM *it, int indent, const ASN1_PCTX *pctx);
 
-static ASN1_PRIMITIVE_FUNCS long_pf = {
+static const ASN1_PRIMITIVE_FUNCS long_pf = {
 	NULL, 0,
 	long_new,
 	long_free,
diff --git a/crypto/bio/buffer.c b/crypto/bio/buffer.c
index 144afd2..415a471 100644
--- a/crypto/bio/buffer.c
+++ b/crypto/bio/buffer.c
@@ -480,7 +480,7 @@
   return buffer_write(b, str, strlen(str));
 }
 
-static BIO_METHOD methods_buffer = {
+static const BIO_METHOD methods_buffer = {
     BIO_TYPE_BUFFER, "buffer",             buffer_write, buffer_read,
     buffer_puts,     buffer_gets,          buffer_ctrl,  buffer_new,
     buffer_free,     buffer_callback_ctrl,
diff --git a/crypto/conf/conf_def.h b/crypto/conf/conf_def.h
index 2fc035b..b1e6ba6 100644
--- a/crypto/conf/conf_def.h
+++ b/crypto/conf/conf_def.h
@@ -91,7 +91,7 @@
 #define IS_DQUOTE(c,a)		(KEYTYPES(c)[(a)&0xff]&CONF_DQUOTE)
 #define IS_HIGHBIT(c,a)		(KEYTYPES(c)[(a)&0xff]&CONF_HIGHBIT)
 
-static unsigned short CONF_type_default[256]={
+static const unsigned short CONF_type_default[256]={
 	0x0008,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
 	0x0000,0x0010,0x0010,0x0000,0x0000,0x0010,0x0000,0x0000,
 	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
diff --git a/crypto/err/err.c b/crypto/err/err.c
index 4e63e21..8b8094f 100644
--- a/crypto/err/err.c
+++ b/crypto/err/err.c
@@ -688,7 +688,7 @@
  * allocated on the heap. */
 static ERR_STRING_DATA kStaticErrors[ERR_NUM_LIBS * 2 + NUM_SYS_ERRNOS];
 
-static ERR_STRING_DATA kGlobalErrors[] = {
+static const ERR_STRING_DATA kGlobalErrors[] = {
     {ERR_R_MALLOC_FAILURE, "malloc failure"},
     {ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED, "function should not be called"},
     {ERR_R_PASSED_NULL_PARAMETER, "passed a null parameter"},
diff --git a/crypto/evp/evp_ctx.c b/crypto/evp/evp_ctx.c
index 6616038..e1c2886 100644
--- a/crypto/evp/evp_ctx.c
+++ b/crypto/evp/evp_ctx.c
@@ -69,7 +69,7 @@
 extern const EVP_PKEY_METHOD hmac_pkey_meth;
 extern const EVP_PKEY_METHOD ec_pkey_meth;
 
-static const EVP_PKEY_METHOD *evp_methods[] = {
+static const EVP_PKEY_METHOD *const evp_methods[] = {
   &rsa_pkey_meth,
   &hmac_pkey_meth,
   &ec_pkey_meth,
diff --git a/crypto/x509/t_x509.c b/crypto/x509/t_x509.c
index 3a28e33..75034b7 100644
--- a/crypto/x509/t_x509.c
+++ b/crypto/x509/t_x509.c
@@ -365,7 +365,7 @@
 	return(0);
 }
 
-static const char *mon[12]=
+static const char *const mon[12]=
     {
     "Jan","Feb","Mar","Apr","May","Jun",
     "Jul","Aug","Sep","Oct","Nov","Dec"
diff --git a/crypto/x509/x509_req.c b/crypto/x509/x509_req.c
index 64f2c37..daaedb6 100644
--- a/crypto/x509/x509_req.c
+++ b/crypto/x509/x509_req.c
@@ -155,9 +155,9 @@
  * used and there may be more: so the list is configurable.
  */
 
-static int ext_nid_list[] = { NID_ext_req, NID_ms_ext_req, NID_undef};
+static const int ext_nid_list[] = { NID_ext_req, NID_ms_ext_req, NID_undef};
 
-static int *ext_nids = ext_nid_list;
+static const int *ext_nids = ext_nid_list;
 
 int X509_REQ_extension_nid(int req_nid)
 {
@@ -169,12 +169,12 @@
 	}
 }
 
-int *X509_REQ_get_extension_nids(void)
+const int *X509_REQ_get_extension_nids(void)
 {
 	return ext_nids;
 }
 	
-void X509_REQ_set_extension_nids(int *nids)
+void X509_REQ_set_extension_nids(const int *nids)
 {
 	ext_nids = nids;
 }
@@ -183,7 +183,8 @@
 	{
 	X509_ATTRIBUTE *attr;
 	ASN1_TYPE *ext = NULL;
-	int idx, *pnid;
+	int idx;
+	const int *pnid;
 	const unsigned char *p;
 
 	if ((req == NULL) || (req->req_info == NULL) || !ext_nids)
diff --git a/crypto/x509/x509_vpm.c b/crypto/x509/x509_vpm.c
index 4699d05..442e070 100644
--- a/crypto/x509/x509_vpm.c
+++ b/crypto/x509/x509_vpm.c
@@ -438,7 +438,7 @@
 	return param->name;
 	}
 
-static X509_VERIFY_PARAM_ID _empty_id = {NULL, 0, 0U, NULL, 0, NULL, 0};
+static const X509_VERIFY_PARAM_ID _empty_id = {NULL, 0, 0U, NULL, 0, NULL, 0};
 
 #define vpm_empty_id (X509_VERIFY_PARAM_ID *)&_empty_id
 
diff --git a/crypto/x509/x_crl.c b/crypto/x509/x_crl.c
index 8e64f76..bb23b57 100644
--- a/crypto/x509/x_crl.c
+++ b/crypto/x509/x_crl.c
@@ -97,7 +97,7 @@
 static int def_crl_lookup(X509_CRL *crl,
 		X509_REVOKED **ret, ASN1_INTEGER *serial, X509_NAME *issuer);
 
-static X509_CRL_METHOD int_crl_meth =
+static const X509_CRL_METHOD int_crl_meth =
 	{
 	0,
 	0,0,
diff --git a/crypto/x509v3/ext_dat.h b/crypto/x509v3/ext_dat.h
index e7d0052..8b2c123 100644
--- a/crypto/x509v3/ext_dat.h
+++ b/crypto/x509v3/ext_dat.h
@@ -74,7 +74,7 @@
 /* TODO(fork): OCSP support */
 #define OPENSSL_NO_OCSP
 
-static const X509V3_EXT_METHOD *standard_exts[] = {
+static const X509V3_EXT_METHOD *const standard_exts[] = {
 &v3_nscert,
 &v3_ns_ia5_list[0],
 &v3_ns_ia5_list[1],
diff --git a/crypto/x509v3/tabtest.c b/crypto/x509v3/tabtest.c
index f783938..26ecc6c 100644
--- a/crypto/x509v3/tabtest.c
+++ b/crypto/x509v3/tabtest.c
@@ -70,7 +70,7 @@
 int main(void)
 {
 	int i, prev = -1, bad = 0;
-	const X509V3_EXT_METHOD **tmp;
+	const X509V3_EXT_METHOD *const *tmp;
         CRYPTO_library_init();
 	i = sizeof(standard_exts) / sizeof(X509V3_EXT_METHOD *);
 	if(i != STANDARD_EXTENSION_COUNT)
diff --git a/crypto/x509v3/v3_bitst.c b/crypto/x509v3/v3_bitst.c
index dd389f0..a4c3186 100644
--- a/crypto/x509v3/v3_bitst.c
+++ b/crypto/x509v3/v3_bitst.c
@@ -62,7 +62,7 @@
 #include <openssl/x509v3.h>
 
 
-static BIT_STRING_BITNAME ns_cert_type_table[] = {
+static const BIT_STRING_BITNAME ns_cert_type_table[] = {
 {0, "SSL Client", "client"},
 {1, "SSL Server", "server"},
 {2, "S/MIME", "email"},
@@ -74,7 +74,7 @@
 {-1, NULL, NULL}
 };
 
-static BIT_STRING_BITNAME key_usage_type_table[] = {
+static const BIT_STRING_BITNAME key_usage_type_table[] = {
 {0, "Digital Signature", "digitalSignature"},
 {1, "Non Repudiation", "nonRepudiation"},
 {2, "Key Encipherment", "keyEncipherment"},
@@ -95,7 +95,7 @@
 STACK_OF(CONF_VALUE) *i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
 	     ASN1_BIT_STRING *bits, STACK_OF(CONF_VALUE) *ret)
 {
-	BIT_STRING_BITNAME *bnam;
+	const BIT_STRING_BITNAME *bnam;
 	for(bnam =method->usr_data; bnam->lname; bnam++) {
 		if(ASN1_BIT_STRING_get_bit(bits, bnam->bitnum)) 
 			X509V3_add_value(bnam->lname, NULL, &ret);
@@ -109,7 +109,7 @@
 	CONF_VALUE *val;
 	ASN1_BIT_STRING *bs;
 	size_t i;
-	BIT_STRING_BITNAME *bnam;
+	const BIT_STRING_BITNAME *bnam;
 	if(!(bs = M_ASN1_BIT_STRING_new())) {
 		OPENSSL_PUT_ERROR(X509V3, v2i_ASN1_BIT_STRING, ERR_R_MALLOC_FAILURE);
 		return NULL;
diff --git a/crypto/x509v3/v3_conf.c b/crypto/x509v3/v3_conf.c
index 9ee4809..48654cb 100644
--- a/crypto/x509v3/v3_conf.c
+++ b/crypto/x509v3/v3_conf.c
@@ -430,7 +430,7 @@
 	return NCONF_get_section(db, section);
 	}
 
-static X509V3_CONF_METHOD nconf_method = {
+static const X509V3_CONF_METHOD nconf_method = {
 nconf_get_string,
 nconf_get_section,
 NULL,
@@ -485,7 +485,7 @@
 	return CONF_get_section(db, section);
 	}
 
-static X509V3_CONF_METHOD conf_lhash_method = {
+static const X509V3_CONF_METHOD conf_lhash_method = {
 conf_lhash_get_string,
 conf_lhash_get_section,
 NULL,
diff --git a/crypto/x509v3/v3_enum.c b/crypto/x509v3/v3_enum.c
index d6a1b8b..0fe6bb6 100644
--- a/crypto/x509v3/v3_enum.c
+++ b/crypto/x509v3/v3_enum.c
@@ -61,7 +61,7 @@
 #include <openssl/x509v3.h>
 
 
-static ENUMERATED_NAMES crl_reasons[] = {
+static const ENUMERATED_NAMES crl_reasons[] = {
 {CRL_REASON_UNSPECIFIED, 	 "Unspecified", "unspecified"},
 {CRL_REASON_KEY_COMPROMISE,	 "Key Compromise", "keyCompromise"},
 {CRL_REASON_CA_COMPROMISE,	 "CA Compromise", "CACompromise"},
@@ -82,13 +82,13 @@
 (X509V3_EXT_I2S)i2s_ASN1_ENUMERATED_TABLE,
 0,
 0,0,0,0,
-crl_reasons};
+(void *)crl_reasons};
 
 
 char *i2s_ASN1_ENUMERATED_TABLE(X509V3_EXT_METHOD *method,
 	     ASN1_ENUMERATED *e)
 {
-	ENUMERATED_NAMES *enam;
+	const ENUMERATED_NAMES *enam;
 	long strval;
 	strval = ASN1_ENUMERATED_get(e);
 	for(enam = method->usr_data; enam->lname; enam++) {
diff --git a/include/openssl/asn1.h b/include/openssl/asn1.h
index a9864bc..941b156 100644
--- a/include/openssl/asn1.h
+++ b/include/openssl/asn1.h
@@ -1052,7 +1052,7 @@
 OPENSSL_EXPORT unsigned long ASN1_PCTX_get_str_flags(ASN1_PCTX *p);
 OPENSSL_EXPORT void ASN1_PCTX_set_str_flags(ASN1_PCTX *p, unsigned long flags);
 
-OPENSSL_EXPORT BIO_METHOD *BIO_f_asn1(void);
+OPENSSL_EXPORT const BIO_METHOD *BIO_f_asn1(void);
 
 OPENSSL_EXPORT BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it);
 
diff --git a/include/openssl/x509.h b/include/openssl/x509.h
index 475f747..1ee63a1 100644
--- a/include/openssl/x509.h
+++ b/include/openssl/x509.h
@@ -871,8 +871,8 @@
 OPENSSL_EXPORT int		X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey);
 OPENSSL_EXPORT EVP_PKEY *	X509_REQ_get_pubkey(X509_REQ *req);
 OPENSSL_EXPORT int		X509_REQ_extension_nid(int nid);
-OPENSSL_EXPORT int *		X509_REQ_get_extension_nids(void);
-OPENSSL_EXPORT void		X509_REQ_set_extension_nids(int *nids);
+OPENSSL_EXPORT const int *	X509_REQ_get_extension_nids(void);
+OPENSSL_EXPORT void		X509_REQ_set_extension_nids(const int *nids);
 OPENSSL_EXPORT STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req);
 OPENSSL_EXPORT int X509_REQ_add_extensions_nid(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts,
 				int nid);
diff --git a/include/openssl/x509v3.h b/include/openssl/x509v3.h
index 9aa91d6..c891022 100644
--- a/include/openssl/x509v3.h
+++ b/include/openssl/x509v3.h
@@ -130,7 +130,7 @@
 X509 *subject_cert;
 X509_REQ *subject_req;
 X509_CRL *crl;
-X509V3_CONF_METHOD *db_meth;
+const X509V3_CONF_METHOD *db_meth;
 void *db;
 /* Maybe more here */
 };
@@ -389,7 +389,7 @@
 			(X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \
 			(X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \
 			NULL, NULL, \
-			table}
+			(void *)table}
 
 #define EXT_IA5STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_IA5STRING), \
 			0,0,0,0, \
diff --git a/ssl/ssl_sess.c b/ssl/ssl_sess.c
index 367b0f4..28d3051 100644
--- a/ssl/ssl_sess.c
+++ b/ssl/ssl_sess.c
@@ -146,7 +146,7 @@
 /* The address of this is a magic value, a pointer to which is returned by
  * SSL_magic_pending_session_ptr(). It allows a session callback to indicate
  * that it needs to asynchronously fetch session information. */
-static char g_pending_session_magic;
+static const char g_pending_session_magic;
 
 static void SSL_SESSION_list_remove(SSL_CTX *ctx, SSL_SESSION *s);
 static void SSL_SESSION_list_add(SSL_CTX *ctx,SSL_SESSION *s);
