wolfSSL_X509_NAME_print_ex should not put the null terminator in the BIO

This commit is contained in:
Juliusz Sosinowicz
2019-10-23 12:20:35 +02:00
parent de3c11d55c
commit 31c0abd610
2 changed files with 12 additions and 7 deletions

View File

@ -538,6 +538,10 @@ then
ENABLED_OPENSSLALL="yes" ENABLED_OPENSSLALL="yes"
fi fi
if test "$ENABLED_NGINX" = "yes"
then
ENABLED_OPENSSLALL="yes"
fi
if test "$ENABLED_OPENSSLALL" = "yes" if test "$ENABLED_OPENSSLALL" = "yes"
then then
AM_CFLAGS="-DOPENSSL_ALL -DWOLFSSL_EITHER_SIDE $AM_CFLAGS" AM_CFLAGS="-DOPENSSL_ALL -DWOLFSSL_EITHER_SIDE $AM_CFLAGS"
@ -553,10 +557,6 @@ if test "$ENABLED_OPENSSH" = "yes" || test "$ENABLED_NGINX" = "yes" || test "$EN
then then
ENABLED_OPENSSLEXTRA="yes" ENABLED_OPENSSLEXTRA="yes"
fi fi
if test "$ENABLED_NGINX" = "yes"
then
ENABLED_OPENSSLALL="yes"
fi
if test "$ENABLED_OPENSSLEXTRA" = "yes" && test "x$ENABLED_OPENSSLCOEXIST" = "xno" if test "$ENABLED_OPENSSLEXTRA" = "yes" && test "x$ENABLED_OPENSSLCOEXIST" = "xno"
then then
AM_CFLAGS="-DOPENSSL_EXTRA -DWOLFSSL_ALWAYS_VERIFY_CB $AM_CFLAGS" AM_CFLAGS="-DOPENSSL_EXTRA -DWOLFSSL_ALWAYS_VERIFY_CB $AM_CFLAGS"

View File

@ -39497,6 +39497,9 @@ static int get_dn_attr_by_nid(int n, const char** buf)
} }
#endif #endif
/*
* The BIO output of wolfSSL_X509_NAME_print_ex does NOT include the null terminator
*/
int wolfSSL_X509_NAME_print_ex(WOLFSSL_BIO* bio, WOLFSSL_X509_NAME* name, int wolfSSL_X509_NAME_print_ex(WOLFSSL_BIO* bio, WOLFSSL_X509_NAME* name,
int indent, unsigned long flags) int indent, unsigned long flags)
{ {
@ -39519,7 +39522,7 @@ int wolfSSL_X509_NAME_print_ex(WOLFSSL_BIO* bio, WOLFSSL_X509_NAME* name,
/* If XN_FLAG_DN_REV is present, print X509_NAME in reverse order */ /* If XN_FLAG_DN_REV is present, print X509_NAME in reverse order */
if (flags == (XN_FLAG_RFC2253 & ~XN_FLAG_DN_REV)) { if (flags == (XN_FLAG_RFC2253 & ~XN_FLAG_DN_REV)) {
#if defined(WOLFSSL_APACHE_HTTPD) || defined(OPENSSL_ALL) #if defined(WOLFSSL_APACHE_HTTPD) || defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX)
fullName[0] = '\0'; fullName[0] = '\0';
count = wolfSSL_X509_NAME_entry_count(name); count = wolfSSL_X509_NAME_entry_count(name);
for (i = 0; i < count; i++) { for (i = 0; i < count; i++) {
@ -39551,17 +39554,19 @@ int wolfSSL_X509_NAME_print_ex(WOLFSSL_BIO* bio, WOLFSSL_X509_NAME* name,
} }
totalSz += tmpSz; totalSz += tmpSz;
} }
if (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;
#endif /* WOLFSSL_APACHE_HTTPD || OPENSSL_ALL */ #endif /* WOLFSSL_APACHE_HTTPD || OPENSSL_ALL || WOLFSSL_NGINX */
} }
else if (flags == XN_FLAG_RFC2253) { else if (flags == XN_FLAG_RFC2253) {
if (wolfSSL_BIO_write(bio, name->name + 1, name->sz - 2) if (wolfSSL_BIO_write(bio, name->name + 1, name->sz - 2)
!= name->sz - 2) != name->sz - 2)
return WOLFSSL_FAILURE; return WOLFSSL_FAILURE;
} }
else if (wolfSSL_BIO_write(bio, name->name, name->sz) != name->sz) else if (wolfSSL_BIO_write(bio, name->name, name->sz - 1) != name->sz - 1)
return WOLFSSL_FAILURE; return WOLFSSL_FAILURE;
return WOLFSSL_SUCCESS; return WOLFSSL_SUCCESS;