Fix many off-by-one errors
diff --git a/tests/suites/test_suite_x509write.function b/tests/suites/test_suite_x509write.function
index 53fb3ed..b45395f 100644
--- a/tests/suites/test_suite_x509write.function
+++ b/tests/suites/test_suite_x509write.function
@@ -21,7 +21,7 @@
     unsigned char buf[4000];
     unsigned char check_buf[4000];
     int ret;
-    size_t olen = 2000;
+    size_t olen = sizeof( check_buf );
     FILE *f;
     char *subject_name = "C=NL,O=PolarSSL,CN=PolarSSL Server 1";
 
@@ -36,21 +36,21 @@
     x509write_csr_set_rsa_key( &req, &rsa );
     TEST_ASSERT( x509write_csr_set_subject_name( &req, subject_name ) == 0 );
 
-    ret = x509write_csr_der( &req, buf, 4000 );
+    ret = x509write_csr_der( &req, buf, sizeof( buf ) );
     TEST_ASSERT( ret >= 0 );
 
-    c = buf + 3999 - ret;
+    c = buf + sizeof( buf ) - ret;
 
     f = fopen( cert_req_check_file, "r" );
     TEST_ASSERT( f != NULL );
-    fread( check_buf, 1, 4000, f );
+    fread( check_buf, 1, sizeof( check_buf ), f );
     fclose( f );
 
     pem_init( &pem );
     pem_read_buffer( &pem, "-----BEGIN CERTIFICATE REQUEST-----", "-----END CERTIFICATE REQUEST-----", check_buf, NULL, 0, &olen );
 
-    TEST_ASSERT( memcmp( c, pem.buf, pem.buflen ) == 0 );
     TEST_ASSERT( pem.buflen == (size_t) ret );
+    TEST_ASSERT( memcmp( c, pem.buf, pem.buflen ) == 0 );
 
     x509write_csr_free( &req );
     rsa_free( &rsa );
@@ -73,7 +73,7 @@
     unsigned char check_buf[5000];
     mpi serial;
     int ret;
-    size_t olen = 2000;
+    size_t olen = sizeof( check_buf );
     FILE *f;
 
     mpi_init( &serial );
@@ -103,7 +103,7 @@
     ret = x509write_crt_der( &crt, buf, sizeof(buf) );
     TEST_ASSERT( ret >= 0 );
 
-    c = buf + 3999 - ret;
+    c = buf + sizeof( buf ) - ret;
 
     f = fopen( cert_check_file, "r" );
     TEST_ASSERT( f != NULL );