diff --git a/ChangeLog b/ChangeLog
index 82c9a88..b0354d5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,8 @@
   * Support for DTLS 1.0 and 1.2 (RFC 6347).
 
 API Changes
+   * Test certificates in cert.s are no longer guaranteed to be nul-terminated
+     strings; use the new *_len variables instead of strlen().
    * md_init_ctx() is deprecated in favour of md_setup(), that adds a third
      argument (allowing memory savings if HMAC is not used)
    * Removed individual mdX_hmac and shaX_hmac functions (use generic
diff --git a/include/mbedtls/certs.h b/include/mbedtls/certs.h
index 7b00a8b..e2e9f77 100644
--- a/include/mbedtls/certs.h
+++ b/include/mbedtls/certs.h
@@ -24,47 +24,72 @@
 #ifndef POLARSSL_CERTS_H
 #define POLARSSL_CERTS_H
 
+#include <stddef.h>
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 /* Concatenation of all available CA certificates */
-extern const char test_ca_list[];
+extern const char   test_ca_list[];
+extern const size_t test_ca_list_len;
 
 /*
  * Convenience for users who just want a certificate:
  * RSA by default, or ECDSA if RSA is not available
  */
-extern const char *test_ca_crt;
-extern const char *test_ca_key;
-extern const char *test_ca_pwd;
-extern const char *test_srv_crt;
-extern const char *test_srv_key;
-extern const char *test_cli_crt;
-extern const char *test_cli_key;
+extern const char * test_ca_crt;
+extern const size_t test_ca_crt_len;
+extern const char * test_ca_key;
+extern const size_t test_ca_key_len;
+extern const char * test_ca_pwd;
+extern const size_t test_ca_pwd_len;
+extern const char * test_srv_crt;
+extern const size_t test_srv_crt_len;
+extern const char * test_srv_key;
+extern const size_t test_srv_key_len;
+extern const char * test_cli_crt;
+extern const size_t test_cli_crt_len;
+extern const char * test_cli_key;
+extern const size_t test_cli_key_len;
 
 #if defined(POLARSSL_ECDSA_C)
-extern const char test_ca_crt_ec[];
-extern const char test_ca_key_ec[];
-extern const char test_ca_pwd_ec[];
-extern const char test_srv_crt_ec[];
-extern const char test_srv_key_ec[];
-extern const char test_cli_crt_ec[];
-extern const char test_cli_key_ec[];
+extern const char   test_ca_crt_ec[];
+extern const size_t test_ca_crt_ec_len;
+extern const char   test_ca_key_ec[];
+extern const size_t test_ca_key_ec_len;
+extern const char   test_ca_pwd_ec[];
+extern const size_t test_ca_pwd_ec_len;
+extern const char   test_srv_crt_ec[];
+extern const size_t test_srv_crt_ec_len;
+extern const char   test_srv_key_ec[];
+extern const size_t test_srv_key_ec_len;
+extern const char   test_cli_crt_ec[];
+extern const size_t test_cli_crt_ec_len;
+extern const char   test_cli_key_ec[];
+extern const size_t test_cli_key_ec_len;
 #endif
 
 #if defined(POLARSSL_RSA_C)
-extern const char test_ca_crt_rsa[];
-extern const char test_ca_key_rsa[];
-extern const char test_ca_pwd_rsa[];
-extern const char test_srv_crt_rsa[];
-extern const char test_srv_key_rsa[];
-extern const char test_cli_crt_rsa[];
-extern const char test_cli_key_rsa[];
+extern const char   test_ca_crt_rsa[];
+extern const size_t test_ca_crt_rsa_len;
+extern const char   test_ca_key_rsa[];
+extern const size_t test_ca_key_rsa_len;
+extern const char   test_ca_pwd_rsa[];
+extern const size_t test_ca_pwd_rsa_len;
+extern const char   test_srv_crt_rsa[];
+extern const size_t test_srv_crt_rsa_len;
+extern const char   test_srv_key_rsa[];
+extern const size_t test_srv_key_rsa_len;
+extern const char   test_cli_crt_rsa[];
+extern const size_t test_cli_crt_rsa_len;
+extern const char   test_cli_key_rsa[];
+extern const size_t test_cli_key_rsa_len;
 #endif
 
 #if defined(POLARSSL_DHM_C)
-extern const char test_dhm_params[];
+extern const char   test_dhm_params[];
+extern const size_t test_dhm_params_len;
 #endif
 
 #ifdef __cplusplus
diff --git a/library/certs.c b/library/certs.c
index bf12f77..f0435e1 100644
--- a/library/certs.c
+++ b/library/certs.c
@@ -26,6 +26,8 @@
 #include POLARSSL_CONFIG_FILE
 #endif
 
+#include "mbedtls/certs.h"
+
 #if defined(POLARSSL_CERTS_C)
 
 #if defined(POLARSSL_ECDSA_C)
@@ -105,6 +107,14 @@
 "AwEHoUQDQgAEV+WusXPf06y7k7iB/xKu7uZTrM5VU/Y0Dswu42MlC9+Y4vNcYDaW\r\n"
 "wNUYFHDlf5/VS0UY5bBs1Vz4lo+HcKPkxw==\r\n"
 "-----END EC PRIVATE KEY-----\r\n";
+
+const size_t test_ca_crt_ec_len  = sizeof( test_ca_crt_ec );
+const size_t test_ca_key_ec_len  = sizeof( test_ca_key_ec );
+const size_t test_ca_pwd_ec_len  = sizeof( test_ca_pwd_ec ) - 1;
+const size_t test_srv_crt_ec_len = sizeof( test_srv_crt_ec );
+const size_t test_srv_key_ec_len = sizeof( test_srv_key_ec );
+const size_t test_cli_crt_ec_len = sizeof( test_cli_crt_ec );
+const size_t test_cli_key_ec_len = sizeof( test_cli_key_ec );
 #else
 #define TEST_CA_CRT_EC
 #endif /* POLARSSL_ECDSA_C */
@@ -219,7 +229,6 @@
 "TB6l9VGoxJL4fyHnZb8L5gGvnB1bbD8cL6YPaDiOhcRseC9vBiEuVg==\r\n"
 "-----END RSA PRIVATE KEY-----\r\n";
 
-
 const char test_cli_crt_rsa[] =
 "-----BEGIN CERTIFICATE-----\r\n"
 "MIIDPzCCAiegAwIBAgIBBDANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJOTDER\r\n"
@@ -270,6 +279,14 @@
 "bHFVW2r0dBTqegP2/KTOxKzaHfC1qf0RGDsUoJCNJrd1cwoCLG8P2EF4w3OBrKqv\r\n"
 "8u4ytY0F+Vlanj5lm3TaoHSVF1+NWPyOTiwevIECGKwSxvlki4fDAA==\r\n"
 "-----END RSA PRIVATE KEY-----\r\n";
+
+const size_t test_ca_crt_rsa_len  = sizeof( test_ca_crt_rsa );
+const size_t test_ca_key_rsa_len  = sizeof( test_ca_key_rsa );
+const size_t test_ca_pwd_rsa_len  = sizeof( test_ca_pwd_rsa ) - 1;
+const size_t test_srv_crt_rsa_len = sizeof( test_srv_crt_rsa );
+const size_t test_srv_key_rsa_len = sizeof( test_srv_key_rsa );
+const size_t test_cli_crt_rsa_len = sizeof( test_cli_crt_rsa );
+const size_t test_cli_key_rsa_len = sizeof( test_cli_key_rsa );
 #else
 #define TEST_CA_CRT_RSA
 #endif /* POLARSSL_RSA_C */
@@ -281,27 +298,43 @@
 "1sa18fyfR9OiVEMYglOpkqVoGLN7qd5aQNNi5W7/C+VBdHTBJcGZJyyP5B3qcz32\r\n"
 "9mLJKudlVudV0Qxk5qUJaPZ/xupz0NyoVpviuiBOI1gNi8ovSXWzAgEC\r\n"
 "-----END DH PARAMETERS-----\r\n";
+const size_t test_dhm_params_len = sizeof( test_dhm_params );
 #endif
 
 /* Concatenation of all available CA certificates */
 const char test_ca_list[] = TEST_CA_CRT_RSA TEST_CA_CRT_EC;
+const size_t test_ca_list_len = sizeof( test_ca_list );
 
 #if defined(POLARSSL_RSA_C)
-const char *test_ca_crt = test_ca_crt_rsa;
-const char *test_ca_key = test_ca_key_rsa;
-const char *test_ca_pwd = test_ca_pwd_rsa;
+const char *test_ca_crt  = test_ca_crt_rsa;
+const char *test_ca_key  = test_ca_key_rsa;
+const char *test_ca_pwd  = test_ca_pwd_rsa;
 const char *test_srv_crt = test_srv_crt_rsa;
 const char *test_srv_key = test_srv_key_rsa;
 const char *test_cli_crt = test_cli_crt_rsa;
 const char *test_cli_key = test_cli_key_rsa;
+const size_t test_ca_crt_len  = test_ca_crt_rsa_len;
+const size_t test_ca_key_len  = test_ca_key_rsa_len;
+const size_t test_ca_pwd_len  = test_ca_pwd_rsa_len;
+const size_t test_srv_crt_len = test_srv_crt_rsa_len;
+const size_t test_srv_key_len = test_srv_key_rsa_len;
+const size_t test_cli_crt_len = test_cli_crt_rsa_len;
+const size_t test_cli_key_len = test_cli_key_rsa_len;
 #else /* ! POLARSSL_RSA_C, so POLARSSL_ECDSA_C */
-const char *test_ca_crt = test_ca_crt_ec;
-const char *test_ca_key = test_ca_key_ec;
-const char *test_ca_pwd = test_ca_pwd_ec;
+const char *test_ca_crt  = test_ca_crt_ec;
+const char *test_ca_key  = test_ca_key_ec;
+const char *test_ca_pwd  = test_ca_pwd_ec;
 const char *test_srv_crt = test_srv_crt_ec;
 const char *test_srv_key = test_srv_key_ec;
 const char *test_cli_crt = test_cli_crt_ec;
 const char *test_cli_key = test_cli_key_ec;
+const size_t test_ca_crt_len  = test_ca_crt_ec_len;
+const size_t test_ca_key_len  = test_ca_key_ec_len;
+const size_t test_ca_pwd_len  = test_ca_pwd_ec_len;
+const size_t test_srv_crt_len = test_srv_crt_ec_len;
+const size_t test_srv_key_len = test_srv_key_ec_len;
+const size_t test_cli_crt_len = test_cli_crt_ec_len;
+const size_t test_cli_key_len = test_cli_key_ec_len;
 #endif /* POLARSSL_RSA_C */
 
 #endif /* POLARSSL_CERTS_C */
diff --git a/programs/ssl/dtls_client.c b/programs/ssl/dtls_client.c
index 4a19618..44d2175 100644
--- a/programs/ssl/dtls_client.c
+++ b/programs/ssl/dtls_client.c
@@ -130,7 +130,7 @@
 
 #if defined(POLARSSL_CERTS_C)
     ret = x509_crt_parse( &cacert, (const unsigned char *) test_ca_list,
-                          strlen( test_ca_list ) );
+                          test_ca_list_len );
 #else
     ret = 1;
     polarssl_printf("POLARSSL_CERTS_C not defined.");
diff --git a/programs/ssl/dtls_server.c b/programs/ssl/dtls_server.c
index 46c2a33..31216c6 100644
--- a/programs/ssl/dtls_server.c
+++ b/programs/ssl/dtls_server.c
@@ -128,7 +128,7 @@
      * server and CA certificates, as well as pk_parse_keyfile().
      */
     ret = x509_crt_parse( &srvcert, (const unsigned char *) test_srv_crt,
-                          strlen( test_srv_crt ) );
+                          test_srv_crt_len );
     if( ret != 0 )
     {
         printf( " failed\n  !  x509_crt_parse returned %d\n\n", ret );
@@ -136,7 +136,7 @@
     }
 
     ret = x509_crt_parse( &srvcert, (const unsigned char *) test_ca_list,
-                          strlen( test_ca_list ) );
+                          test_ca_list_len );
     if( ret != 0 )
     {
         printf( " failed\n  !  x509_crt_parse returned %d\n\n", ret );
@@ -144,7 +144,7 @@
     }
 
     ret =  pk_parse_key( &pkey, (const unsigned char *) test_srv_key,
-                         strlen( test_srv_key ), NULL, 0 );
+                         test_srv_key_len, NULL, 0 );
     if( ret != 0 )
     {
         printf( " failed\n  !  pk_parse_key returned %d\n\n", ret );
diff --git a/programs/ssl/ssl_client1.c b/programs/ssl/ssl_client1.c
index c7eb3bd..184f2bd 100644
--- a/programs/ssl/ssl_client1.c
+++ b/programs/ssl/ssl_client1.c
@@ -121,7 +121,7 @@
 
 #if defined(POLARSSL_CERTS_C)
     ret = x509_crt_parse( &cacert, (const unsigned char *) test_ca_list,
-                          strlen( test_ca_list ) );
+                          test_ca_list_len );
 #else
     ret = 1;
     polarssl_printf("POLARSSL_CERTS_C not defined.");
diff --git a/programs/ssl/ssl_client2.c b/programs/ssl/ssl_client2.c
index f0e6781..5088cc6 100644
--- a/programs/ssl/ssl_client2.c
+++ b/programs/ssl/ssl_client2.c
@@ -947,7 +947,7 @@
 #endif
 #if defined(POLARSSL_CERTS_C)
         ret = x509_crt_parse( &cacert, (const unsigned char *) test_ca_list,
-                strlen( test_ca_list ) );
+                test_ca_list_len );
 #else
     {
         ret = 1;
@@ -980,7 +980,7 @@
 #endif
 #if defined(POLARSSL_CERTS_C)
         ret = x509_crt_parse( &clicert, (const unsigned char *) test_cli_crt,
-                strlen( test_cli_crt ) );
+                test_cli_crt_len );
 #else
     {
         ret = 1;
@@ -1003,7 +1003,7 @@
 #endif
 #if defined(POLARSSL_CERTS_C)
         ret = pk_parse_key( &pkey, (const unsigned char *) test_cli_key,
-                strlen( test_cli_key ), NULL, 0 );
+                test_cli_key_len, NULL, 0 );
 #else
     {
         ret = 1;
diff --git a/programs/ssl/ssl_fork_server.c b/programs/ssl/ssl_fork_server.c
index 217851f..87379e5 100644
--- a/programs/ssl/ssl_fork_server.c
+++ b/programs/ssl/ssl_fork_server.c
@@ -154,7 +154,7 @@
      * server and CA certificates, as well as pk_parse_keyfile().
      */
     ret = x509_crt_parse( &srvcert, (const unsigned char *) test_srv_crt,
-                          strlen( test_srv_crt ) );
+                          test_srv_crt_len );
     if( ret != 0 )
     {
         polarssl_printf( " failed\n  !  x509_crt_parse returned %d\n\n", ret );
@@ -162,7 +162,7 @@
     }
 
     ret = x509_crt_parse( &srvcert, (const unsigned char *) test_ca_list,
-                          strlen( test_ca_list ) );
+                          test_ca_list_len );
     if( ret != 0 )
     {
         polarssl_printf( " failed\n  !  x509_crt_parse returned %d\n\n", ret );
@@ -170,7 +170,7 @@
     }
 
     ret =  pk_parse_key( &pkey, (const unsigned char *) test_srv_key,
-                          strlen( test_srv_key ), NULL, 0 );
+                          test_srv_key_len, NULL, 0 );
     if( ret != 0 )
     {
         polarssl_printf( " failed\n  !  pk_parse_key returned %d\n\n", ret );
diff --git a/programs/ssl/ssl_mail_client.c b/programs/ssl/ssl_mail_client.c
index a68af75..eaaaa2c 100644
--- a/programs/ssl/ssl_mail_client.c
+++ b/programs/ssl/ssl_mail_client.c
@@ -508,7 +508,7 @@
 #endif
 #if defined(POLARSSL_CERTS_C)
         ret = x509_crt_parse( &cacert, (const unsigned char *) test_ca_list,
-                              strlen( test_ca_list ) );
+                              test_ca_list_len );
 #else
     {
         ret = 1;
@@ -538,7 +538,7 @@
 #endif
 #if defined(POLARSSL_CERTS_C)
         ret = x509_crt_parse( &clicert, (const unsigned char *) test_cli_crt,
-                              strlen( test_cli_crt ) );
+                              test_cli_crt_len );
 #else
     {
         ret = -1;
@@ -558,7 +558,7 @@
 #endif
 #if defined(POLARSSL_CERTS_C)
         ret = pk_parse_key( &pkey, (const unsigned char *) test_cli_key,
-                strlen( test_cli_key ), NULL, 0 );
+                test_cli_key_len, NULL, 0 );
 #else
     {
         ret = -1;
diff --git a/programs/ssl/ssl_pthread_server.c b/programs/ssl/ssl_pthread_server.c
index 56b3056..6a0ce35 100644
--- a/programs/ssl/ssl_pthread_server.c
+++ b/programs/ssl/ssl_pthread_server.c
@@ -417,7 +417,7 @@
      * server and CA certificates, as well as pk_parse_keyfile().
      */
     ret = x509_crt_parse( &srvcert, (const unsigned char *) test_srv_crt,
-                          strlen( test_srv_crt ) );
+                          test_srv_crt_len );
     if( ret != 0 )
     {
         polarssl_printf( " failed\n  !  x509_crt_parse returned %d\n\n", ret );
@@ -425,7 +425,7 @@
     }
 
     ret = x509_crt_parse( &srvcert, (const unsigned char *) test_ca_list,
-                          strlen( test_ca_list ) );
+                          test_ca_list_len );
     if( ret != 0 )
     {
         polarssl_printf( " failed\n  !  x509_crt_parse returned %d\n\n", ret );
@@ -434,7 +434,7 @@
 
     pk_init( &pkey );
     ret =  pk_parse_key( &pkey, (const unsigned char *) test_srv_key,
-                         strlen( test_srv_key ), NULL, 0 );
+                         test_srv_key_len, NULL, 0 );
     if( ret != 0 )
     {
         polarssl_printf( " failed\n  !  pk_parse_key returned %d\n\n", ret );
diff --git a/programs/ssl/ssl_server.c b/programs/ssl/ssl_server.c
index 6932221..64f6c4e 100644
--- a/programs/ssl/ssl_server.c
+++ b/programs/ssl/ssl_server.c
@@ -132,7 +132,7 @@
      * server and CA certificates, as well as pk_parse_keyfile().
      */
     ret = x509_crt_parse( &srvcert, (const unsigned char *) test_srv_crt,
-                          strlen( test_srv_crt ) );
+                          test_srv_crt_len );
     if( ret != 0 )
     {
         polarssl_printf( " failed\n  !  x509_crt_parse returned %d\n\n", ret );
@@ -140,7 +140,7 @@
     }
 
     ret = x509_crt_parse( &srvcert, (const unsigned char *) test_ca_list,
-                          strlen( test_ca_list ) );
+                          test_ca_list_len );
     if( ret != 0 )
     {
         polarssl_printf( " failed\n  !  x509_crt_parse returned %d\n\n", ret );
@@ -148,7 +148,7 @@
     }
 
     ret =  pk_parse_key( &pkey, (const unsigned char *) test_srv_key,
-                         strlen( test_srv_key ), NULL, 0 );
+                         test_srv_key_len, NULL, 0 );
     if( ret != 0 )
     {
         polarssl_printf( " failed\n  !  pk_parse_key returned %d\n\n", ret );
diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c
index d513ca7..0afe42b 100644
--- a/programs/ssl/ssl_server2.c
+++ b/programs/ssl/ssl_server2.c
@@ -1328,7 +1328,7 @@
 #endif
 #if defined(POLARSSL_CERTS_C)
         ret = x509_crt_parse( &cacert, (const unsigned char *) test_ca_list,
-                              strlen( test_ca_list ) );
+                              test_ca_list_len );
 #else
     {
         ret = 1;
@@ -1416,14 +1416,14 @@
 #if defined(POLARSSL_RSA_C)
         if( ( ret = x509_crt_parse( &srvcert,
                                     (const unsigned char *) test_srv_crt_rsa,
-                                    strlen( test_srv_crt_rsa ) ) ) != 0 )
+                                    test_srv_crt_rsa_len ) ) != 0 )
         {
             polarssl_printf( " failed\n  !  x509_crt_parse returned -0x%x\n\n", -ret );
             goto exit;
         }
         if( ( ret = pk_parse_key( &pkey,
                                   (const unsigned char *) test_srv_key_rsa,
-                                  strlen( test_srv_key_rsa ), NULL, 0 ) ) != 0 )
+                                  test_srv_key_rsa_len, NULL, 0 ) ) != 0 )
         {
             polarssl_printf( " failed\n  !  pk_parse_key returned -0x%x\n\n", -ret );
             goto exit;
@@ -1433,14 +1433,14 @@
 #if defined(POLARSSL_ECDSA_C)
         if( ( ret = x509_crt_parse( &srvcert2,
                                     (const unsigned char *) test_srv_crt_ec,
-                                    strlen( test_srv_crt_ec ) ) ) != 0 )
+                                    test_srv_crt_ec_len ) ) != 0 )
         {
             polarssl_printf( " failed\n  !  x509_crt_parse2 returned -0x%x\n\n", -ret );
             goto exit;
         }
         if( ( ret = pk_parse_key( &pkey2,
                                   (const unsigned char *) test_srv_key_ec,
-                                  strlen( test_srv_key_ec ), NULL, 0 ) ) != 0 )
+                                  test_srv_key_ec_len, NULL, 0 ) ) != 0 )
         {
             polarssl_printf( " failed\n  !  pk_parse_key2 returned -0x%x\n\n", -ret );
             goto exit;
