mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-01 19:54:40 +02:00
Don't count null char in better way
This commit is contained in:
@@ -39658,24 +39658,24 @@ int wolfSSL_X509_NAME_print_ex(WOLFSSL_BIO* bio, WOLFSSL_X509_NAME* name,
|
|||||||
if (len == 0 || buf == NULL)
|
if (len == 0 || buf == NULL)
|
||||||
return WOLFSSL_FAILURE;
|
return WOLFSSL_FAILURE;
|
||||||
|
|
||||||
tmpSz = str->length + len + 2; /* + 2 for '=' and null char */
|
tmpSz = str->length + len + 2; /* + 2 for '=' and comma */
|
||||||
if (tmpSz > ASN_NAME_MAX) {
|
if (tmpSz > ASN_NAME_MAX) {
|
||||||
WOLFSSL_MSG("Size greater than ASN_NAME_MAX");
|
WOLFSSL_MSG("Size greater than ASN_NAME_MAX");
|
||||||
return WOLFSSL_FAILURE;
|
return WOLFSSL_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i < count - 1) {
|
if (i < count - 1) {
|
||||||
|
/* tmpSz+1 for last null char */
|
||||||
XSNPRINTF(tmp, tmpSz+1, "%s=%s,", buf, str->data);
|
XSNPRINTF(tmp, tmpSz+1, "%s=%s,", buf, str->data);
|
||||||
XSTRNCAT(fullName, tmp, tmpSz);
|
XSTRNCAT(fullName, tmp, tmpSz);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
XSNPRINTF(tmp, tmpSz, "%s=%s", buf, str->data);
|
XSNPRINTF(tmp, tmpSz, "%s=%s", buf, str->data);
|
||||||
XSTRNCAT(fullName, tmp, tmpSz-1);
|
XSTRNCAT(fullName, tmp, tmpSz-1);
|
||||||
|
tmpSz--; /* Don't include null char in tmpSz */
|
||||||
}
|
}
|
||||||
totalSz += tmpSz;
|
totalSz += tmpSz;
|
||||||
}
|
}
|
||||||
if (totalSz > 0 && fullName[totalSz-1] == '\0')
|
|
||||||
totalSz--;
|
|
||||||
if (wolfSSL_BIO_write(bio, fullName, totalSz) != totalSz)
|
if (wolfSSL_BIO_write(bio, fullName, totalSz) != totalSz)
|
||||||
return WOLFSSL_FAILURE;
|
return WOLFSSL_FAILURE;
|
||||||
return WOLFSSL_SUCCESS;
|
return WOLFSSL_SUCCESS;
|
||||||
|
@@ -4351,6 +4351,7 @@ static void test_wolfSSL_X509_NAME_get_entry(void)
|
|||||||
ASN1_STRING* asn;
|
ASN1_STRING* asn;
|
||||||
int idx;
|
int idx;
|
||||||
ASN1_OBJECT *object = NULL;
|
ASN1_OBJECT *object = NULL;
|
||||||
|
BIO* bio;
|
||||||
|
|
||||||
#ifndef NO_FILESYSTEM
|
#ifndef NO_FILESYSTEM
|
||||||
x509 = wolfSSL_X509_load_certificate_file(cliCertFile, WOLFSSL_FILETYPE_PEM);
|
x509 = wolfSSL_X509_load_certificate_file(cliCertFile, WOLFSSL_FILETYPE_PEM);
|
||||||
@@ -4373,6 +4374,11 @@ static void test_wolfSSL_X509_NAME_get_entry(void)
|
|||||||
idx = X509_NAME_get_index_by_NID(name, NID_commonName, -1);
|
idx = X509_NAME_get_index_by_NID(name, NID_commonName, -1);
|
||||||
AssertIntGE(idx, 0);
|
AssertIntGE(idx, 0);
|
||||||
|
|
||||||
|
AssertNotNull(bio = BIO_new(BIO_s_mem()));
|
||||||
|
AssertIntEQ(X509_NAME_print_ex(bio, name, 4,
|
||||||
|
(XN_FLAG_RFC2253 & ~XN_FLAG_DN_REV)), WOLFSSL_SUCCESS);
|
||||||
|
BIO_free(bio);
|
||||||
|
|
||||||
ne = X509_NAME_get_entry(name, idx);
|
ne = X509_NAME_get_entry(name, idx);
|
||||||
AssertNotNull(ne);
|
AssertNotNull(ne);
|
||||||
AssertNotNull(object = X509_NAME_ENTRY_get_object(ne));
|
AssertNotNull(object = X509_NAME_ENTRY_get_object(ne));
|
||||||
|
Reference in New Issue
Block a user