diff --git a/src/internal.c b/src/internal.c index 683835fd2..56e6a3e66 100755 --- a/src/internal.c +++ b/src/internal.c @@ -787,7 +787,7 @@ int wolfSSL_dtls_import_internal(byte* buf, word32 sz, WOLFSSL* ssl) word32 idx = 0; word16 length = 0; int version; - int ret; + int ret, i; WOLFSSL_ENTER("wolfSSL_dtls_import_internal"); /* check at least enough room for protocol and length */ @@ -885,6 +885,19 @@ int wolfSSL_dtls_import_internal(byte* buf, word32 sz, WOLFSSL* ssl) ssl->hmac = TLS_hmac; } + /* make sure is a valid suite used */ + ret = SUITES_ERROR; + for (i = 0; i < ssl->suites->suiteSz; i += 2) { + if (ssl->suites->suites[i] == ssl->options.cipherSuite0 && + ssl->suites->suites[i+1] == ssl->options.cipherSuite) { + ret = 0; + break; + } + } + if (ret != 0) { + return ret; + } + return idx; } #endif /* WOLFSSL_DTLS */