From 351a81c65dbd12adb29f807bad5c433a8739d1b2 Mon Sep 17 00:00:00 2001 From: Dave Rodgman Date: Thu, 12 Oct 2023 16:36:05 +0100 Subject: [PATCH] Keep initialisation of p in its original location Signed-off-by: Dave Rodgman --- library/x509_create.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/library/x509_create.c b/library/x509_create.c index 93ca2debc..271d4f12c 100644 --- a/library/x509_create.c +++ b/library/x509_create.c @@ -218,6 +218,8 @@ static int parse_attribute_value_hex_der_encoded(const char *s, size_t *data_len, int *tag) { + unsigned char *p; + /* Step 1: preliminary length checks. */ /* Each byte is encoded by exactly two hexadecimal digits. */ if (len % 2 != 0) { @@ -243,8 +245,6 @@ static int parse_attribute_value_hex_der_encoded(const char *s, return MBEDTLS_ERR_X509_ALLOC_FAILED; } /* Beyond this point, der needs to be freed on exit. */ - unsigned char *p = der + 1; - for (size_t i = 0; i < der_length; i++) { int c = hexpair_to_int(s + 2 * i); if (c < 0) { @@ -256,6 +256,7 @@ static int parse_attribute_value_hex_der_encoded(const char *s, /* Step 3: decode the DER. */ /* We've checked that der_length >= 1 above. */ *tag = der[0]; + p = der + 1; if (mbedtls_asn1_get_len(&p, der + der_length, data_len) != 0) { goto error; }