From 18c36794440c219ddcf4f9bc6f4dd7188a95234d Mon Sep 17 00:00:00 2001 From: toddouska Date: Wed, 8 Aug 2012 16:56:19 -0700 Subject: [PATCH] fix DLTS cookieSz init problem --- cyassl/error.h | 5 +++-- src/internal.c | 7 ++++++- tests/api.c | 2 -- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/cyassl/error.h b/cyassl/error.h index c3b79d0ce..ed96361ec 100644 --- a/cyassl/error.h +++ b/cyassl/error.h @@ -101,11 +101,12 @@ enum CyaSSL_ErrorCodes { OCSP_CERT_UNKNOWN = -266, /* OCSP responder doesn't know */ OCSP_LOOKUP_FAIL = -267, /* OCSP lookup not successful */ MAX_CHAIN_ERROR = -268, /* max chain depth exceeded */ + COOKIE_ERROR = -269, /* dtls cookie error */ /* add strings to SetErrorString !!!!! */ /* begin negotiation parameter errors */ - UNSUPPORTED_SUITE = -270, /* unsupported cipher suite */ - MATCH_SUITE_ERROR = -271 /* can't match cipher suite */ + UNSUPPORTED_SUITE = -290, /* unsupported cipher suite */ + MATCH_SUITE_ERROR = -291 /* can't match cipher suite */ /* end negotiation parameter errors only 10 for now */ /* add strings to SetErrorString !!!!! */ }; diff --git a/src/internal.c b/src/internal.c index ae5169e19..ff73e0bfd 100644 --- a/src/internal.c +++ b/src/internal.c @@ -919,6 +919,7 @@ int InitSSL(CYASSL* ssl, CYASSL_CTX* ctx) ssl->keys.dtls_handshake_number = 0; ssl->keys.dtls_epoch = 0; ssl->keys.dtls_peer_epoch = 0; + ssl->arrays.cookieSz = 0; #endif ssl->keys.encryptionOn = 0; /* initially off */ ssl->options.sessionCacheOff = ctx->sessionCacheOff; @@ -3769,6 +3770,10 @@ void SetErrorString(int error, char* str) XSTRNCPY(str, "Maximum Chain Depth Exceeded", max); break; + case COOKIE_ERROR: + XSTRNCPY(str, "DTLS Cookie Error", max); + break; + default : XSTRNCPY(str, "unknown error number", max); } @@ -6453,7 +6458,7 @@ int SetCipherList(Suites* s, const char* list) return INCOMPLETE_DATA; cookieSz = EmbedGenerateCookie(cookie, COOKIE_SZ, ssl); if ((b != cookieSz) || XMEMCMP(cookie, input + i, b) != 0) - return PARSE_ERROR; + return COOKIE_ERROR; i += b; } } diff --git a/tests/api.c b/tests/api.c index ef898cd08..102dc09a5 100644 --- a/tests/api.c +++ b/tests/api.c @@ -602,9 +602,7 @@ THREAD_RETURN CYASSL_THREAD test_server_nofail(void* args) } ssl = CyaSSL_new(ctx); tcp_accept(&sockfd, &clientfd, (func_args*)args, yasslPort, 0, 0); -#ifndef CYASSL_DTLS CloseSocket(sockfd); -#endif CyaSSL_set_fd(ssl, clientfd);