@@ -10450,8 +10450,7 @@ const char* wolfSSL_CIPHER_get_name(const WOLFSSL_CIPHER* cipher)
1045010450 return NULL;
1045110451 }
1045210452
10453- #if !defined(WOLFSSL_CIPHER_INTERNALNAME) && !defined(NO_ERROR_STRINGS) && \
10454- !defined(WOLFSSL_QT)
10453+ #if !defined(WOLFSSL_CIPHER_INTERNALNAME) && !defined(NO_ERROR_STRINGS)
1045510454 return GetCipherNameIana(cipher->cipherSuite0, cipher->cipherSuite);
1045610455 #else
1045710456 return wolfSSL_get_cipher_name_from_suite(cipher->cipherSuite0,
@@ -14015,12 +14014,7 @@ void* wolfSSL_GetHKDFExtractCtx(WOLFSSL* ssl)
1401514014 }
1401614015 if (i == (int)WOLFSSL_OBJECT_INFO_SZ) {
1401714016 WOLFSSL_MSG("NID not in table");
14018- #ifdef WOLFSSL_QT
14019- sName = NULL;
14020- type = (word32)id;
14021- #else
1402214017 return NULL;
14023- #endif
1402414018 }
1402514019
1402614020 #ifdef HAVE_ECC
@@ -16010,9 +16004,8 @@ static WC_INLINE int sslCipherMinMaxCheck(const WOLFSSL *ssl, byte suite0,
1601016004 */
1601116005WOLF_STACK_OF(WOLFSSL_CIPHER) *wolfSSL_get_ciphers_compat(const WOLFSSL *ssl)
1601216006{
16013- WOLF_STACK_OF(WOLFSSL_CIPHER)* ret = NULL;
1601416007 const Suites* suites;
16015- #if defined(OPENSSL_ALL) || defined(WOLFSSL_QT)
16008+ #if defined(OPENSSL_ALL)
1601616009 const CipherSuiteInfo* cipher_names = GetCipherNames();
1601716010 int cipherSz = GetCipherNamesSize();
1601816011#endif
@@ -16028,15 +16021,20 @@ WOLF_STACK_OF(WOLFSSL_CIPHER) *wolfSSL_get_ciphers_compat(const WOLFSSL *ssl)
1602816021 /* check if stack needs populated */
1602916022 if (ssl->suitesStack == NULL) {
1603016023 int i;
16031- #if defined(OPENSSL_ALL) || defined(WOLFSSL_QT)
16032- int j;
16024+
16025+ ((WOLFSSL*)ssl)->suitesStack =
16026+ wolfssl_sk_new_type_ex(STACK_TYPE_CIPHER, ssl->heap);
16027+ if (ssl->suitesStack == NULL)
16028+ return NULL;
1603316029
1603416030 /* higher priority of cipher suite will be on top of stack */
16035- for (i = suites->suiteSz - 2; i >=0; i-=2) {
16031+ #if defined(OPENSSL_ALL)
16032+ for (i = suites->suiteSz - 2; i >=0; i-=2)
1603616033#else
16037- for (i = 0; i < suites->suiteSz; i+=2) {
16034+ for (i = 0; i < suites->suiteSz; i+=2)
1603816035#endif
16039- WOLFSSL_STACK* add;
16036+ {
16037+ struct WOLFSSL_CIPHER cipher;
1604016038
1604116039 /* A couple of suites are placeholders for special options,
1604216040 * skip those. */
@@ -16046,39 +16044,30 @@ WOLF_STACK_OF(WOLFSSL_CIPHER) *wolfSSL_get_ciphers_compat(const WOLFSSL *ssl)
1604616044 continue;
1604716045 }
1604816046
16049- add = wolfSSL_sk_new_node(ssl->heap);
16050- if (add != NULL) {
16051- add->type = STACK_TYPE_CIPHER;
16052- add->data.cipher.cipherSuite0 = suites->suites[i];
16053- add->data.cipher.cipherSuite = suites->suites[i+1];
16054- add->data.cipher.ssl = ssl;
16055- #if defined(OPENSSL_ALL) || defined(WOLFSSL_QT)
16047+ XMEMSET(&cipher, 0, sizeof(cipher));
16048+ cipher.cipherSuite0 = suites->suites[i];
16049+ cipher.cipherSuite = suites->suites[i+1];
16050+ cipher.ssl = ssl;
16051+ #if defined(OPENSSL_ALL)
16052+ cipher.in_stack = 1;
16053+ {
16054+ int j;
1605616055 for (j = 0; j < cipherSz; j++) {
16057- if (cipher_names[j].cipherSuite0 ==
16058- add->data.cipher.cipherSuite0 &&
16059- cipher_names[j].cipherSuite ==
16060- add->data.cipher.cipherSuite) {
16061- add->data.cipher.offset = (unsigned long)j;
16056+ if (cipher_names[j].cipherSuite0 == cipher.cipherSuite0 &&
16057+ cipher_names[j].cipherSuite == cipher.cipherSuite) {
16058+ cipher.offset = (unsigned long)j;
1606216059 break;
1606316060 }
1606416061 }
16062+ }
1606516063#endif
16066- #if defined(WOLFSSL_QT) || defined(OPENSSL_ALL)
16067- /* in_stack is checked in wolfSSL_CIPHER_description */
16068- add->data.cipher.in_stack = 1;
16069- #endif
16070-
16071- add->next = ret;
16072- if (ret != NULL) {
16073- add->num = ret->num + 1;
16074- }
16075- else {
16076- add->num = 1;
16077- }
16078- ret = add;
16064+ if (wolfSSL_sk_insert(ssl->suitesStack, &cipher, 0) <= 0) {
16065+ WOLFSSL_MSG("Error inserting cipher onto stack");
16066+ wolfSSL_sk_CIPHER_free(ssl->suitesStack);
16067+ ((WOLFSSL*)ssl)->suitesStack = NULL;
16068+ break;
1607916069 }
1608016070 }
16081- ((WOLFSSL*)ssl)->suitesStack = ret;
1608216071 }
1608316072 return ssl->suitesStack;
1608416073}
0 commit comments