in wolfSSL_ERR_reason_error_string(), unconditionally convert positive error codes to negative, and in switch(), match against negated values of OpenSSL positive codes like WOLFSSL_ERROR_WANT_READ. fixes #6514

This commit is contained in:
Daniel Pouzzner
2023-06-15 17:42:03 -05:00
parent 82cc988226
commit 970663f8a1

View File

@@ -23096,12 +23096,11 @@ const char* wolfSSL_ERR_reason_error_string(unsigned long e)
#else #else
int error = (int)e; int error = (int)e;
#ifdef OPENSSL_EXTRA
/* OpenSSL uses positive error codes */ /* OpenSSL uses positive error codes */
if (error > 0) { if (error > 0) {
error = -error; error = -error;
} }
#endif
/* pass to wolfCrypt */ /* pass to wolfCrypt */
if (error < MAX_CODE_E && error > MIN_CODE_E) { if (error < MAX_CODE_E && error > MIN_CODE_E) {
@@ -23200,7 +23199,7 @@ const char* wolfSSL_ERR_reason_error_string(unsigned long e)
return "peer ip address mismatch"; return "peer ip address mismatch";
case WANT_READ : case WANT_READ :
case WOLFSSL_ERROR_WANT_READ : case -WOLFSSL_ERROR_WANT_READ :
return "non-blocking socket wants data to be read"; return "non-blocking socket wants data to be read";
case NOT_READY_ERROR : case NOT_READY_ERROR :
@@ -23210,9 +23209,22 @@ const char* wolfSSL_ERR_reason_error_string(unsigned long e)
return "record layer version error"; return "record layer version error";
case WANT_WRITE : case WANT_WRITE :
case WOLFSSL_ERROR_WANT_WRITE : case -WOLFSSL_ERROR_WANT_WRITE :
return "non-blocking socket write buffer full"; return "non-blocking socket write buffer full";
case -WOLFSSL_ERROR_WANT_CONNECT:
case -WOLFSSL_ERROR_WANT_ACCEPT:
return "The underlying BIO was not yet connected";
case -WOLFSSL_ERROR_SYSCALL:
return "fatal I/O error in TLS layer";
case -WOLFSSL_ERROR_WANT_X509_LOOKUP:
return "application client cert callback asked to be called again";
case -WOLFSSL_ERROR_SSL:
return "fatal TLS protocol error";
case BUFFER_ERROR : case BUFFER_ERROR :
return "malformed buffer input error"; return "malformed buffer input error";
@@ -23250,7 +23262,7 @@ const char* wolfSSL_ERR_reason_error_string(unsigned long e)
return "can't decode peer key"; return "can't decode peer key";
case ZERO_RETURN: case ZERO_RETURN:
case WOLFSSL_ERROR_ZERO_RETURN: case -WOLFSSL_ERROR_ZERO_RETURN:
return "peer sent close notify alert"; return "peer sent close notify alert";
case ECC_CURVETYPE_ERROR: case ECC_CURVETYPE_ERROR: