forked from wolfSSL/wolfssl
Fixes required after logging changes to master.
This commit is contained in:
@ -2351,7 +2351,7 @@ then
|
|||||||
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_ALWAYS_VERIFY_CB"
|
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_ALWAYS_VERIFY_CB"
|
||||||
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_ALWAYS_KEEP_SNI"
|
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_ALWAYS_KEEP_SNI"
|
||||||
AM_CFLAGS="$AM_CFLAGS -DKEEP_OUR_CERT -DKEEP_PEER_CERT"
|
AM_CFLAGS="$AM_CFLAGS -DKEEP_OUR_CERT -DKEEP_PEER_CERT"
|
||||||
AM_CFLAGS="$AM_CFLAGS -DHAVE_EXT_CACHE -DOPENSSL_ERR_ONE -DHAVE_EX_DATA"
|
AM_CFLAGS="$AM_CFLAGS -DHAVE_EXT_CACHE -DHAVE_EX_DATA"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
73
src/ssl.c
73
src/ssl.c
@ -10583,12 +10583,15 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
|||||||
|
|
||||||
unsigned long wolfSSL_ERR_get_error(void)
|
unsigned long wolfSSL_ERR_get_error(void)
|
||||||
{
|
{
|
||||||
WOLFSSL_ENTER("wolfSSL_ERR_clear_error");
|
WOLFSSL_ENTER("wolfSSL_ERR_get_error");
|
||||||
|
|
||||||
#if defined(OPENSSL_ERR_ONE)
|
#if defined(WOLFSSL_NGINX)
|
||||||
unsigned long ret = wc_last_error;
|
{
|
||||||
wc_last_error = 0;
|
unsigned long ret = wolfSSL_ERR_peek_error_line_data(NULL, NULL,
|
||||||
return ret;
|
NULL, NULL);
|
||||||
|
wc_RemoveErrorNode(-1);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
return (unsigned long)(0 - NOT_COMPILED_IN);
|
return (unsigned long)(0 - NOT_COMPILED_IN);
|
||||||
#endif
|
#endif
|
||||||
@ -12138,8 +12141,8 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD *md)
|
|||||||
{
|
{
|
||||||
WOLFSSL_ENTER("wolfSSL_ERR_clear_error");
|
WOLFSSL_ENTER("wolfSSL_ERR_clear_error");
|
||||||
|
|
||||||
#if defined(OPENSSL_ERR_ONE)
|
#if defined(WOLFSSL_NGINX)
|
||||||
wc_last_error = 0;
|
wc_ClearErrorNodes();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -15019,8 +15022,8 @@ unsigned long wolfSSL_ERR_peek_error(void)
|
|||||||
{
|
{
|
||||||
WOLFSSL_ENTER("wolfSSL_ERR_peek_error");
|
WOLFSSL_ENTER("wolfSSL_ERR_peek_error");
|
||||||
|
|
||||||
#if defined(OPENSSL_ERR_ONE)
|
#ifdef WOLFSSL_NGINX
|
||||||
return wc_last_error;
|
return wolfSSL_ERR_peek_error_line_data(NULL, NULL, NULL, NULL);
|
||||||
#else
|
#else
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
@ -21330,7 +21333,7 @@ void* wolfSSL_GetRsaDecCtx(WOLFSSL* ssl)
|
|||||||
}
|
}
|
||||||
#ifdef WOLFSSL_NGINX
|
#ifdef WOLFSSL_NGINX
|
||||||
if (l == 0)
|
if (l == 0)
|
||||||
wc_last_error = ((ERR_LIB_PEM << 24) | PEM_R_NO_START_LINE);
|
WOLFSSL_ERROR(SSL_NO_PEM_HEADER);
|
||||||
#endif
|
#endif
|
||||||
pemSz = (int)i;
|
pemSz = (int)i;
|
||||||
}
|
}
|
||||||
@ -21608,6 +21611,10 @@ unsigned long wolfSSL_ERR_peek_last_error_line(const char **file, int *line)
|
|||||||
WOLFSSL_MSG("Issue peeking at error node in queue");
|
WOLFSSL_MSG("Issue peeking at error node in queue");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#ifdef WOLFSSL_NGINX
|
||||||
|
if (ret == -SSL_NO_PEM_HEADER)
|
||||||
|
return (ERR_LIB_PEM << 24) | PEM_R_NO_START_LINE;
|
||||||
|
#endif
|
||||||
return (unsigned long)ret;
|
return (unsigned long)ret;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@ -22032,7 +22039,7 @@ int wolfSSL_PEM_write_bio_X509(WOLFSSL_BIO *bio, WOLFSSL_X509 *cert)
|
|||||||
XFREE(bio->mem, NULL, DYNAMIC_TYPE_OPENSSL);
|
XFREE(bio->mem, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||||
}
|
}
|
||||||
bio->mem = (byte*)XMALLOC(pemSz, NULL, DYNAMIC_TYPE_OPENSSL);
|
bio->mem = (byte*)XMALLOC(pemSz, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||||
if (bio->mem != NULL) {
|
if (bio->mem == NULL) {
|
||||||
return SSL_FAILURE;
|
return SSL_FAILURE;
|
||||||
}
|
}
|
||||||
bio->memLen = pemSz;
|
bio->memLen = pemSz;
|
||||||
@ -22201,8 +22208,18 @@ unsigned long wolfSSL_ERR_peek_last_error(void)
|
|||||||
{
|
{
|
||||||
WOLFSSL_ENTER("wolfSSL_ERR_peek_last_error");
|
WOLFSSL_ENTER("wolfSSL_ERR_peek_last_error");
|
||||||
|
|
||||||
#if defined(OPENSSL_ERR_ONE)
|
#ifdef WOLFSSL_NGINX
|
||||||
return wc_last_error;
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if ((ret = wc_PeekErrorNode(-1, NULL, NULL, NULL)) < 0) {
|
||||||
|
WOLFSSL_MSG("Issue peeking at error node in queue");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (ret == -SSL_NO_PEM_HEADER)
|
||||||
|
return (ERR_LIB_PEM << 24) | PEM_R_NO_START_LINE;
|
||||||
|
return (unsigned long)ret;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
return (unsigned long)(0 - NOT_COMPILED_IN);
|
return (unsigned long)(0 - NOT_COMPILED_IN);
|
||||||
#endif
|
#endif
|
||||||
@ -22943,7 +22960,7 @@ int wolfSSL_AsyncPoll(WOLFSSL* ssl, WOLF_EVENT_FLAG flags)
|
|||||||
}
|
}
|
||||||
#endif /* WOLFSSL_ASYNC_CRYPT */
|
#endif /* WOLFSSL_ASYNC_CRYPT */
|
||||||
|
|
||||||
#if defined(WOLFSSL_NGINX)
|
#ifdef WOLFSSL_NGINX
|
||||||
void wolfSSL_OPENSSL_config(char *config_name)
|
void wolfSSL_OPENSSL_config(char *config_name)
|
||||||
{
|
{
|
||||||
WOLFSSL_STUB("wolfSSL_OPENSSL_config");
|
WOLFSSL_STUB("wolfSSL_OPENSSL_config");
|
||||||
@ -23210,14 +23227,28 @@ unsigned long wolfSSL_ERR_peek_error_line_data(const char **file, int *line,
|
|||||||
*flags = 0;
|
*flags = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(OPENSSL_ERR_ONE)
|
#if defined(WOLFSSL_NGINX)
|
||||||
if (line != NULL) {
|
{
|
||||||
*line = (int)wc_last_error_line;
|
int ret = 0;
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
if ((ret = wc_PeekErrorNode(-1, file, NULL, line)) < 0) {
|
||||||
|
WOLFSSL_MSG("Issue peeking at error node in queue");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
ret = -ret;
|
||||||
|
|
||||||
|
if (ret == SSL_NO_PEM_HEADER)
|
||||||
|
return (ERR_LIB_PEM << 24) | PEM_R_NO_START_LINE;
|
||||||
|
if (ret != WANT_READ && ret != WANT_WRITE &&
|
||||||
|
ret != ZERO_RETURN && ret != SSL_ERROR_ZERO_RETURN)
|
||||||
|
break;
|
||||||
|
|
||||||
|
wc_RemoveErrorNode(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (unsigned long)ret;
|
||||||
}
|
}
|
||||||
if (file != NULL) {
|
|
||||||
*file = (char*)wc_last_error_file;
|
|
||||||
}
|
|
||||||
return wc_last_error;
|
|
||||||
#else
|
#else
|
||||||
return (unsigned long)(0 - NOT_COMPILED_IN);
|
return (unsigned long)(0 - NOT_COMPILED_IN);
|
||||||
#endif
|
#endif
|
||||||
|
@ -50,6 +50,7 @@ static void* wc_error_heap;
|
|||||||
struct wc_error_queue {
|
struct wc_error_queue {
|
||||||
void* heap; /* the heap hint used with nodes creation */
|
void* heap; /* the heap hint used with nodes creation */
|
||||||
struct wc_error_queue* next;
|
struct wc_error_queue* next;
|
||||||
|
struct wc_error_queue* prev;
|
||||||
char error[WOLFSSL_MAX_ERROR_SZ];
|
char error[WOLFSSL_MAX_ERROR_SZ];
|
||||||
char file[WOLFSSL_MAX_ERROR_SZ];
|
char file[WOLFSSL_MAX_ERROR_SZ];
|
||||||
int value;
|
int value;
|
||||||
@ -61,10 +62,11 @@ static struct wc_error_queue* wc_last_node;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef DEBUG_WOLFSSL
|
|
||||||
|
#if defined(DEBUG_WOLFSSL)
|
||||||
|
|
||||||
/* Set these to default values initially. */
|
/* Set these to default values initially. */
|
||||||
static wolfSSL_Logging_cb log_function = 0;
|
static wolfSSL_Logging_cb log_function = NULL;
|
||||||
static int loggingEnabled = 0;
|
static int loggingEnabled = 0;
|
||||||
|
|
||||||
#endif /* DEBUG_WOLFSSL */
|
#endif /* DEBUG_WOLFSSL */
|
||||||
@ -215,21 +217,25 @@ void WOLFSSL_LEAVE(const char* msg, int ret)
|
|||||||
wolfssl_log(LEAVE_LOG , buffer);
|
wolfssl_log(LEAVE_LOG , buffer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif /* DEBUG_WOLFSSL */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When using OPENSSL_EXTRA or DEBUG_WOLFSSL_VERBOSE macro then WOLFSSL_ERROR is
|
* When using OPENSSL_EXTRA or DEBUG_WOLFSSL_VERBOSE macro then WOLFSSL_ERROR is
|
||||||
* mapped to new funtion WOLFSSL_ERROR_LINE which gets the line # and function
|
* mapped to new funtion WOLFSSL_ERROR_LINE which gets the line # and function
|
||||||
* name where WOLFSSL_ERROR is called at.
|
* name where WOLFSSL_ERROR is called at.
|
||||||
*/
|
*/
|
||||||
#if defined(OPENSSL_EXTRA) || defined(DEBUG_WOLFSSL_VERBOSE)
|
#if (defined(DEBUG_WOLFSSL) || defined(WOLFSSL_NGINX))
|
||||||
|
#if (defined(OPENSSL_EXTRA) || defined(DEBUG_WOLFSSL_VERBOSE))
|
||||||
void WOLFSSL_ERROR_LINE(int error, const char* func, unsigned int line,
|
void WOLFSSL_ERROR_LINE(int error, const char* func, unsigned int line,
|
||||||
const char* file, void* usrCtx)
|
const char* file, void* usrCtx)
|
||||||
#else
|
#else
|
||||||
void WOLFSSL_ERROR(int error)
|
void WOLFSSL_ERROR(int error)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
if (loggingEnabled) {
|
#if defined(DEBUG_WOLFSSL) && !defined(WOLFSSL_NGINX)
|
||||||
|
if (loggingEnabled)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
char buffer[80];
|
char buffer[80];
|
||||||
#if defined(OPENSSL_EXTRA) || defined(DEBUG_WOLFSSL_VERBOSE)
|
#if defined(OPENSSL_EXTRA) || defined(DEBUG_WOLFSSL_VERBOSE)
|
||||||
(void)usrCtx; /* a user ctx for future flexibility */
|
(void)usrCtx; /* a user ctx for future flexibility */
|
||||||
@ -254,11 +260,13 @@ void WOLFSSL_ERROR(int error)
|
|||||||
#else
|
#else
|
||||||
sprintf(buffer, "wolfSSL error occurred, error = %d", error);
|
sprintf(buffer, "wolfSSL error occurred, error = %d", error);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef DEBUG_WOLFSSL
|
||||||
wolfssl_log(ERROR_LOG , buffer);
|
wolfssl_log(ERROR_LOG , buffer);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* DEBUG_WOLFSSL */
|
#endif /* DEBUG_WOLFSSL || WOLFSSL_NGINX */
|
||||||
|
|
||||||
#if defined(OPENSSL_EXTRA) || defined(DEBUG_WOLFSSL_VERBOSE)
|
#if defined(OPENSSL_EXTRA) || defined(DEBUG_WOLFSSL_VERBOSE)
|
||||||
/* Internal function that is called by wolfCrypt_Init() */
|
/* Internal function that is called by wolfCrypt_Init() */
|
||||||
@ -305,7 +313,7 @@ int wc_LoggingCleanup(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef DEBUG_WOLFSSL
|
#if defined(DEBUG_WOLFSSL) || defined(WOLFSSL_NGINX)
|
||||||
/* peek at an error node
|
/* peek at an error node
|
||||||
*
|
*
|
||||||
* index : if -1 then the most recent node is looked at, otherwise search
|
* index : if -1 then the most recent node is looked at, otherwise search
|
||||||
@ -424,13 +432,74 @@ int wc_AddErrorNode(int error, int line, char* buf, char* file)
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
wc_last_node->next = err;
|
wc_last_node->next = err;
|
||||||
|
err->prev = wc_last_node;
|
||||||
wc_last_node = err;
|
wc_last_node = err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif /* DEBUG_WOLFSSL */
|
|
||||||
|
/* Removes the error node at the specified index.
|
||||||
|
* index : if -1 then the most recent node is looked at, otherwise search
|
||||||
|
* through queue for node at the given index
|
||||||
|
*/
|
||||||
|
void wc_RemoveErrorNode(int index)
|
||||||
|
{
|
||||||
|
struct wc_error_queue* current;
|
||||||
|
|
||||||
|
if (wc_LockMutex(&debug_mutex) != 0) {
|
||||||
|
WOLFSSL_MSG("Lock debug mutex failed");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (index == -1)
|
||||||
|
current = wc_last_node;
|
||||||
|
else {
|
||||||
|
current = (struct wc_error_queue*)wc_errors;
|
||||||
|
for (; current != NULL && index > 0; index--)
|
||||||
|
current = current->next;
|
||||||
|
}
|
||||||
|
if (current != NULL) {
|
||||||
|
if (current->prev != NULL)
|
||||||
|
current->prev->next = current->next;
|
||||||
|
if (wc_last_node == current)
|
||||||
|
wc_last_node = current->prev;
|
||||||
|
if (wc_errors == current)
|
||||||
|
wc_errors = current->next;
|
||||||
|
XFREE(current, current->heap, DYNAMIC_TYPE_LOG);
|
||||||
|
}
|
||||||
|
|
||||||
|
wc_UnLockMutex(&debug_mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Clears out the list of error nodes.
|
||||||
|
*/
|
||||||
|
void wc_ClearErrorNodes(void)
|
||||||
|
{
|
||||||
|
if (wc_LockMutex(&debug_mutex) != 0) {
|
||||||
|
WOLFSSL_MSG("Lock debug mutex failed");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* free all nodes from error queue */
|
||||||
|
{
|
||||||
|
struct wc_error_queue* current;
|
||||||
|
struct wc_error_queue* next;
|
||||||
|
|
||||||
|
current = (struct wc_error_queue*)wc_errors;
|
||||||
|
while (current != NULL) {
|
||||||
|
next = current->next;
|
||||||
|
XFREE(current, current->heap, DYNAMIC_TYPE_LOG);
|
||||||
|
current = next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
wc_errors = NULL;
|
||||||
|
wc_last_node = NULL;
|
||||||
|
wc_UnLockMutex(&debug_mutex);
|
||||||
|
}
|
||||||
|
#endif /* DEBUG_WOLFSSL || WOLFSSL_NGINX */
|
||||||
|
|
||||||
|
|
||||||
int wc_SetLoggingHeap(void* h)
|
int wc_SetLoggingHeap(void* h)
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#define WOLFSSL_SHA_H_
|
#define WOLFSSL_SHA_H_
|
||||||
|
|
||||||
#include <wolfssl/wolfcrypt/settings.h>
|
#include <wolfssl/wolfcrypt/settings.h>
|
||||||
|
#include <wolfssl/wolfcrypt/types.h>
|
||||||
|
|
||||||
#ifdef WOLFSSL_PREFIX
|
#ifdef WOLFSSL_PREFIX
|
||||||
#include "prefix_sha.h"
|
#include "prefix_sha.h"
|
||||||
|
@ -53,6 +53,8 @@ WOLFSSL_API int wolfSSL_SetLoggingCb(wolfSSL_Logging_cb log_function);
|
|||||||
char* file);
|
char* file);
|
||||||
WOLFSSL_LOCAL int wc_PeekErrorNode(int index, const char **file,
|
WOLFSSL_LOCAL int wc_PeekErrorNode(int index, const char **file,
|
||||||
const char **reason, int *line);
|
const char **reason, int *line);
|
||||||
|
WOLFSSL_LOCAL void wc_RemoveErrorNode(int index);
|
||||||
|
WOLFSSL_LOCAL void wc_ClearErrorNodes(void);
|
||||||
WOLFSSL_API int wc_SetLoggingHeap(void* h);
|
WOLFSSL_API int wc_SetLoggingHeap(void* h);
|
||||||
#if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM)
|
#if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM)
|
||||||
WOLFSSL_API void wc_ERR_print_errors_fp(FILE* fp);
|
WOLFSSL_API void wc_ERR_print_errors_fp(FILE* fp);
|
||||||
@ -68,13 +70,6 @@ WOLFSSL_API int wolfSSL_SetLoggingCb(wolfSSL_Logging_cb log_function);
|
|||||||
#define WOLFSSL_STUB(m) \
|
#define WOLFSSL_STUB(m) \
|
||||||
WOLFSSL_MSG(WOLFSSL_LOG_CAT(wolfSSL Stub, m, not implemented))
|
WOLFSSL_MSG(WOLFSSL_LOG_CAT(wolfSSL Stub, m, not implemented))
|
||||||
|
|
||||||
#if defined(OPENSSL_EXTRA) || defined(DEBUG_WOLFSSL_VERBOSE)
|
|
||||||
void WOLFSSL_ERROR_LINE(int err, const char* func, unsigned int line,
|
|
||||||
const char* file, void* ctx);
|
|
||||||
#define WOLFSSL_ERROR(x) WOLFSSL_ERROR_LINE((x), __func__, __LINE__, __FILE__,NULL)
|
|
||||||
#else
|
|
||||||
void WOLFSSL_ERROR(int);
|
|
||||||
#endif
|
|
||||||
void WOLFSSL_MSG(const char* msg);
|
void WOLFSSL_MSG(const char* msg);
|
||||||
void WOLFSSL_BUFFER(byte* buffer, word32 length);
|
void WOLFSSL_BUFFER(byte* buffer, word32 length);
|
||||||
|
|
||||||
@ -84,12 +79,23 @@ WOLFSSL_API int wolfSSL_SetLoggingCb(wolfSSL_Logging_cb log_function);
|
|||||||
#define WOLFSSL_LEAVE(m, r)
|
#define WOLFSSL_LEAVE(m, r)
|
||||||
#define WOLFSSL_STUB(m)
|
#define WOLFSSL_STUB(m)
|
||||||
|
|
||||||
#define WOLFSSL_ERROR(e)
|
|
||||||
#define WOLFSSL_MSG(m)
|
#define WOLFSSL_MSG(m)
|
||||||
#define WOLFSSL_BUFFER(b, l)
|
#define WOLFSSL_BUFFER(b, l)
|
||||||
|
|
||||||
#endif /* DEBUG_WOLFSSL */
|
#endif /* DEBUG_WOLFSSL */
|
||||||
|
|
||||||
|
#if (defined(DEBUG_WOLFSSL) || defined(WOLFSSL_NGINX))
|
||||||
|
#if (defined(OPENSSL_EXTRA) || defined(DEBUG_WOLFSSL_VERBOSE))
|
||||||
|
void WOLFSSL_ERROR_LINE(int err, const char* func, unsigned int line,
|
||||||
|
const char* file, void* ctx);
|
||||||
|
#define WOLFSSL_ERROR(x) WOLFSSL_ERROR_LINE((x), __func__, __LINE__, __FILE__,NULL)
|
||||||
|
#else
|
||||||
|
void WOLFSSL_ERROR(int);
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#define WOLFSSL_ERROR(e)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user