diff --git a/library/x509write.c b/library/x509write.c index 213add6a0..330263645 100644 --- a/library/x509write.c +++ b/library/x509write.c @@ -76,7 +76,7 @@ int x509cert_req_set_subject_name( x509_cert_req *ctx, char *subject_name ) char *end = s + strlen( s ); char *oid = NULL; int in_tag = 1; - x509_req_name *cur = ctx->subject; + x509_req_name *cur; while( ctx->subject ) { @@ -121,15 +121,7 @@ int x509cert_req_set_subject_name( x509_cert_req *ctx, char *subject_name ) goto exit; } - if( cur == NULL ) - { - ctx->subject = cur = polarssl_malloc( sizeof(x509_req_name) ); - } - else - { - cur->next = polarssl_malloc( sizeof(x509_req_name) ); - cur = cur->next; - } + cur = polarssl_malloc( sizeof(x509_req_name) ); if( cur == NULL ) { @@ -139,6 +131,9 @@ int x509cert_req_set_subject_name( x509_cert_req *ctx, char *subject_name ) memset( cur, 0, sizeof(x509_req_name) ); + cur->next = ctx->subject; + ctx->subject = cur; + strncpy( cur->oid, oid, strlen( oid ) ); strncpy( cur->name, s, c - s ); diff --git a/tests/suites/test_suite_x509write.function b/tests/suites/test_suite_x509write.function index c44cfb7ed..2453bd403 100644 --- a/tests/suites/test_suite_x509write.function +++ b/tests/suites/test_suite_x509write.function @@ -23,7 +23,7 @@ void x509_cert_req_check( char *key_file, int md_type, int ret; size_t olen = 2000; FILE *f; - char *subject_name = "CN=PolarSSL Server 1,O=PolarSSL,C=NL"; + char *subject_name = "C=NL,O=PolarSSL,CN=PolarSSL Server 1"; memset( &rsa, 0, sizeof(rsa_context) ); ret = x509parse_keyfile_rsa( &rsa, key_file, NULL );