@@ -13051,13 +13051,16 @@ static int wolfSSL_EscapeString_RFC2253(char* in, word32 inSz,
1305113051 * RFC22523 currently implemented.
1305213052 * XN_FLAG_DN_REV - print name reversed. Automatically done by
1305313053 * XN_FLAG_RFC2253.
13054+ * XN_FLAG_SPC_EQ - spaces before and after '=' character
1305413055 *
1305513056 * Returns WOLFSSL_SUCCESS (1) on success, WOLFSSL_FAILURE (0) on failure.
1305613057 */
1305713058int wolfSSL_X509_NAME_print_ex (WOLFSSL_BIO * bio , WOLFSSL_X509_NAME * name ,
1305813059 int indent , unsigned long flags )
1305913060{
1306013061 int i , count = 0 , nameStrSz = 0 , escapeSz = 0 ;
13062+ int eqSpace = 0 ;
13063+ char eqStr [4 ];
1306113064 char * tmp = NULL ;
1306213065 char * nameStr = NULL ;
1306313066 const char * buf = NULL ;
@@ -13070,6 +13073,15 @@ int wolfSSL_X509_NAME_print_ex(WOLFSSL_BIO* bio, WOLFSSL_X509_NAME* name,
1307013073 if ((name == NULL ) || (name -> sz == 0 ) || (bio == NULL ))
1307113074 return WOLFSSL_FAILURE ;
1307213075
13076+ XMEMSET (eqStr , 0 , sizeof (eqStr ));
13077+ if (flags & XN_FLAG_SPC_EQ ) {
13078+ eqSpace = 2 ;
13079+ XSTRNCPY (eqStr , " = " , 4 );
13080+ }
13081+ else {
13082+ XSTRNCPY (eqStr , "=" , 4 );
13083+ }
13084+
1307313085 for (i = 0 ; i < indent ; i ++ ) {
1307413086 if (wolfSSL_BIO_write (bio , " " , 1 ) != 1 )
1307513087 return WOLFSSL_FAILURE ;
@@ -13114,32 +13126,33 @@ int wolfSSL_X509_NAME_print_ex(WOLFSSL_BIO* bio, WOLFSSL_X509_NAME* name,
1311413126 if (len == 0 || buf == NULL )
1311513127 return WOLFSSL_FAILURE ;
1311613128
13117- tmpSz = nameStrSz + len + 4 ; /* + 4 for '=', comma space and '\0'*/
13129+ /* + 4 for '=', comma space and '\0'*/
13130+ tmpSz = nameStrSz + len + 4 + eqSpace ;
1311813131 tmp = (char * )XMALLOC (tmpSz , NULL , DYNAMIC_TYPE_TMP_BUFFER );
1311913132 if (tmp == NULL ) {
1312013133 return WOLFSSL_FAILURE ;
1312113134 }
1312213135
1312313136 if (i < count - 1 ) {
13124- if (XSNPRINTF (tmp , (size_t )tmpSz , "%s=%s , " , buf , nameStr )
13137+ if (XSNPRINTF (tmp , (size_t )tmpSz , "%s%s%s , " , buf , eqStr , nameStr )
1312513138 >= tmpSz )
1312613139 {
1312713140 WOLFSSL_MSG ("buffer overrun" );
1312813141 XFREE (tmp , NULL , DYNAMIC_TYPE_TMP_BUFFER );
1312913142 return WOLFSSL_FAILURE ;
1313013143 }
1313113144
13132- tmpSz = len + nameStrSz + 3 ; /* 3 for '=', comma space */
13145+ tmpSz = len + nameStrSz + 3 + eqSpace ; /* 3 for '=', comma space */
1313313146 }
1313413147 else {
13135- if (XSNPRINTF (tmp , (size_t )tmpSz , "%s=%s " , buf , nameStr )
13148+ if (XSNPRINTF (tmp , (size_t )tmpSz , "%s%s%s " , buf , eqStr , nameStr )
1313613149 >= tmpSz )
1313713150 {
1313813151 WOLFSSL_MSG ("buffer overrun" );
1313913152 XFREE (tmp , NULL , DYNAMIC_TYPE_TMP_BUFFER );
1314013153 return WOLFSSL_FAILURE ;
1314113154 }
13142- tmpSz = len + nameStrSz + 1 ; /* 1 for '=' */
13155+ tmpSz = len + nameStrSz + 1 + eqSpace ; /* 1 for '=' */
1314313156 if (bio -> type != WOLFSSL_BIO_FILE && bio -> type != WOLFSSL_BIO_MEMORY )
1314413157 ++ tmpSz ; /* include the terminating null when not writing to a
1314513158 * file.
0 commit comments