Switched order of storing x509_req_names to match inputed order
diff --git a/library/x509write.c b/library/x509write.c
index 213add6..3302636 100644
--- a/library/x509write.c
+++ b/library/x509write.c
@@ -76,7 +76,7 @@
     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 @@
                 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 @@
 
             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 c44cfb7..2453bd4 100644
--- a/tests/suites/test_suite_x509write.function
+++ b/tests/suites/test_suite_x509write.function
@@ -23,7 +23,7 @@
     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 );