From 175984550d775a03e7bb6319690fae5cd119c5b0 Mon Sep 17 00:00:00 2001 From: beck <> Date: Wed, 3 May 2023 08:10:23 +0000 Subject: Revert utf-8 fix for X509_NAME_get_index_by_NID to avoid libtls regress for the moment. this will come back after we rethink the failure versus not there case. ok tb@ jsing@ --- src/lib/libcrypto/x509/x509name.c | 37 ++++++++++--------------------------- 1 file changed, 10 insertions(+), 27 deletions(-) (limited to 'src/lib/libcrypto/x509') diff --git a/src/lib/libcrypto/x509/x509name.c b/src/lib/libcrypto/x509/x509name.c index 319d79d74f..ecdf473ea9 100644 --- a/src/lib/libcrypto/x509/x509name.c +++ b/src/lib/libcrypto/x509/x509name.c @@ -1,4 +1,4 @@ -/* $OpenBSD: x509name.c,v 1.33 2023/05/03 07:13:18 beck Exp $ */ +/* $OpenBSD: x509name.c,v 1.34 2023/05/03 08:10:23 beck Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -66,7 +66,6 @@ #include #include -#include "bytestring.h" #include "x509_local.h" int @@ -85,37 +84,21 @@ int X509_NAME_get_text_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, char *buf, int len) { - unsigned char *text = NULL; + int i; ASN1_STRING *data; - int i, text_len; - int ret = -1; - CBS cbs; i = X509_NAME_get_index_by_OBJ(name, obj, -1); if (i < 0) - goto err; + return (-1); data = X509_NAME_ENTRY_get_data(X509_NAME_get_entry(name, i)); - /* - * Fail if we cannot encode as UTF-8, or if the UTF-8 encoding of the - * string contains a 0 byte, because mortal callers seldom handle the - * length difference correctly - */ - if ((text_len = ASN1_STRING_to_UTF8(&text, data)) < 0) - goto err; - CBS_init(&cbs, text, text_len); - if (CBS_contains_zero_byte(&cbs)) - goto err; - /* We still support the "pass NULL to find out how much" API */ - if (buf != NULL) { - if (len <= 0 || !CBS_write_bytes(&cbs, buf, len - 1, NULL)) - goto err; - /* It must be a C string */ - buf[text_len] = '\0'; + i = (data->length > (len - 1)) ? (len - 1) : data->length; + if (buf == NULL) + return (data->length); + if (i >= 0) { + memcpy(buf, data->data, i); + buf[i] = '\0'; } - ret = text_len; - err: - free(text); - return (ret); + return (i); } LCRYPTO_ALIAS(X509_NAME_get_text_by_OBJ); -- cgit v1.2.3-55-g6feb