Remove x509_oid_from_numericoid

Signed-off-by: Agathiyan Bragadeesh <agathiyan.bragadeesh2@arm.com>
diff --git a/library/x509_create.c b/library/x509_create.c
index 9d40db0..daf17a6 100644
--- a/library/x509_create.c
+++ b/library/x509_create.c
@@ -130,34 +130,6 @@
     return cur;
 }
 
-static char *x509_oid_from_numericoid(const char *numericoid,
-                                      size_t numericoid_len)
-{
-    char *oid;
-    mbedtls_asn1_buf *oid_buf = mbedtls_calloc(1, sizeof(mbedtls_asn1_buf));
-    int ret;
-
-    ret = mbedtls_oid_from_numeric_string(oid_buf, numericoid, numericoid_len);
-    if (ret != 0) {
-        if (ret != MBEDTLS_ERR_ASN1_ALLOC_FAILED) {
-            mbedtls_free(oid_buf->p);
-        }
-        mbedtls_free(oid_buf);
-        return NULL;
-    }
-    oid = mbedtls_calloc(1, oid_buf->len + 1);
-    if(oid == NULL) {
-        mbedtls_free(oid_buf->p);
-        mbedtls_free(oid_buf);
-        return MBEDTLS_ERR_X509_ALLOC_FAILED;
-    }
-    memcpy(oid, oid_buf->p, oid_buf->len);
-    oid[oid_buf->len + 1] = '\0';
-    mbedtls_free(oid_buf->p);
-    mbedtls_free(oid_buf);
-    return oid;
-}
-
 static int hex_to_int(char c)
 {
     return ('0' <= c && c <= '9') ? (c - '0') :
@@ -270,7 +242,7 @@
     int parse_ret = 0;
     const char *s = name, *c = s;
     const char *end = s + strlen(s);
-    char *oid = NULL;
+    mbedtls_asn1_buf oid = { .p = NULL, .len = 0, .tag = 5 };
     const x509_attr_descriptor_t *attr_descr = NULL;
     int in_attr_type = 1;
     int tag;
@@ -284,14 +256,15 @@
     while (c <= end) {
         if (in_attr_type && *c == '=') {
             if ((attr_descr = x509_attr_descr_from_name(s, c - s)) == NULL) {
-                if ((oid = x509_oid_from_numericoid(s, c - s)) == NULL) {
+                if ((mbedtls_oid_from_numeric_string(&oid, s, c - s)) != 0) {
                     return MBEDTLS_ERR_X509_INVALID_NAME;
                 } else {
                     numericoid = 1;
                 }
             } else {
-                oid = mbedtls_calloc(1, strlen(attr_descr->oid));
-                strcpy(oid, attr_descr->oid);
+                oid.len = strlen(attr_descr->oid);
+                oid.p = mbedtls_calloc(1, oid.len);
+                memcpy(oid.p, attr_descr->oid, oid.len);
                 numericoid = 0;
             }
 
@@ -305,13 +278,13 @@
                      parse_attribute_value_ber_encoded(s, (int) (c - s), data, &data_len,
                                                        &tag)) != 0) {
                 if (numericoid) {
-                    mbedtls_free(oid);
+                    mbedtls_free(oid.p);
                     return MBEDTLS_ERR_X509_INVALID_NAME;
                 } else {
                     if ((parse_ret =
                              parse_attribute_value_string(s, (int) (c - s), data,
                                                           &data_len)) != 0) {
-                        mbedtls_free(oid);
+                        mbedtls_free(oid.p);
                         return parse_ret;
                     }
                     tag = attr_descr->default_tag;
@@ -332,11 +305,11 @@
             }
 #endif
             mbedtls_asn1_named_data *cur =
-                mbedtls_asn1_store_named_data(head, oid, strlen(oid),
+                mbedtls_asn1_store_named_data(head, (char *) oid.p, oid.len,
                                               (unsigned char *) data,
                                               data_len);
-            mbedtls_free(oid);
-            oid = NULL;
+            mbedtls_free(oid.p);
+            oid.p = NULL;
             if (cur == NULL) {
                 return MBEDTLS_ERR_X509_ALLOC_FAILED;
             }
@@ -356,8 +329,8 @@
         }
         c++;
     }
-    if (oid != NULL) {
-        mbedtls_free(oid);
+    if (oid.p != NULL) {
+        mbedtls_free(oid.p);
     }
     return ret;
 }