mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-31 19:24:42 +02:00
error put function
This commit is contained in:
90
src/ssl.c
90
src/ssl.c
@@ -14220,6 +14220,94 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD *md)
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
unsigned long wolfSSL_ERR_get_error_line(const char** file, int* line)
|
||||
{
|
||||
#ifdef DEBUG_WOLFSSL
|
||||
if (file != NULL) {
|
||||
*file = (const char*)wc_last_error_file;
|
||||
}
|
||||
|
||||
if (line != NULL) {
|
||||
*line = (int)wc_last_error_line;
|
||||
|
||||
}
|
||||
|
||||
return wc_last_error;
|
||||
#else
|
||||
(void)file;
|
||||
(void)line;
|
||||
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#ifdef DEBUG_WOLFSSL
|
||||
static const char WOLFSSL_SYS_ACCEPT_T[] = "accept";
|
||||
static const char WOLFSSL_SYS_BIND_T[] = "bind";
|
||||
static const char WOLFSSL_SYS_CONNECT_T[] = "connect";
|
||||
static const char WOLFSSL_SYS_FOPEN_T[] = "fopen";
|
||||
static const char WOLFSSL_SYS_FREAD_T[] = "fread";
|
||||
static const char WOLFSSL_SYS_GETADDRINFO_T[] = "getaddrinfo";
|
||||
static const char WOLFSSL_SYS_GETSOCKOPT_T[] = "getsockopt";
|
||||
static const char WOLFSSL_SYS_GETSOCKNAME_T[] = "getsockname";
|
||||
static const char WOLFSSL_SYS_GETHOSTBYNAME_T[] = "gethostbyname";
|
||||
static const char WOLFSSL_SYS_GETNAMEINFO_T[] = "getnameinfo";
|
||||
static const char WOLFSSL_SYS_GETSERVBYNAME_T[] = "getservbyname";
|
||||
static const char WOLFSSL_SYS_IOCTLSOCKET_T[] = "ioctlsocket";
|
||||
static const char WOLFSSL_SYS_LISTEN_T[] = "listen";
|
||||
static const char WOLFSSL_SYS_OPENDIR_T[] = "opendir";
|
||||
static const char WOLFSSL_SYS_SETSOCKOPT_T[] = "setsockopt";
|
||||
static const char WOLFSSL_SYS_SOCKET_T[] = "socket";
|
||||
|
||||
/* switch with int mapped to function name for compatibility */
|
||||
static const char* wolfSSL_ERR_sys_func(int fun)
|
||||
{
|
||||
switch (fun) {
|
||||
case WOLFSSL_SYS_ACCEPT: return WOLFSSL_SYS_ACCEPT_T;
|
||||
case WOLFSSL_SYS_BIND: return WOLFSSL_SYS_BIND_T;
|
||||
case WOLFSSL_SYS_CONNECT: return WOLFSSL_SYS_CONNECT_T;
|
||||
case WOLFSSL_SYS_FOPEN: return WOLFSSL_SYS_FOPEN_T;
|
||||
case WOLFSSL_SYS_FREAD: return WOLFSSL_SYS_FREAD_T;
|
||||
case WOLFSSL_SYS_GETADDRINFO: return WOLFSSL_SYS_GETADDRINFO_T;
|
||||
case WOLFSSL_SYS_GETSOCKOPT: return WOLFSSL_SYS_GETSOCKOPT_T;
|
||||
case WOLFSSL_SYS_GETSOCKNAME: return WOLFSSL_SYS_GETSOCKNAME_T;
|
||||
case WOLFSSL_SYS_GETHOSTBYNAME: return WOLFSSL_SYS_GETHOSTBYNAME_T;
|
||||
case WOLFSSL_SYS_GETNAMEINFO: return WOLFSSL_SYS_GETNAMEINFO_T;
|
||||
case WOLFSSL_SYS_GETSERVBYNAME: return WOLFSSL_SYS_GETSERVBYNAME_T;
|
||||
case WOLFSSL_SYS_IOCTLSOCKET: return WOLFSSL_SYS_IOCTLSOCKET_T;
|
||||
case WOLFSSL_SYS_LISTEN: return WOLFSSL_SYS_LISTEN_T;
|
||||
case WOLFSSL_SYS_OPENDIR: return WOLFSSL_SYS_OPENDIR_T;
|
||||
case WOLFSSL_SYS_SETSOCKOPT: return WOLFSSL_SYS_SETSOCKOPT_T;
|
||||
case WOLFSSL_SYS_SOCKET: return WOLFSSL_SYS_SOCKET_T;
|
||||
default:
|
||||
return "NULL";
|
||||
}
|
||||
}
|
||||
#endif /* DEBUG_WOLFSSL */
|
||||
|
||||
|
||||
/* @TODO when having an error queue this needs to push to the queue */
|
||||
void wolfSSL_ERR_put_error(int lib, int fun, int err, const char* file,
|
||||
int line)
|
||||
{
|
||||
WOLFSSL_ENTER("wolfSSL_ERR_put_error");
|
||||
|
||||
#ifndef DEBUG_WOLFSSL
|
||||
(void)fun;
|
||||
(void)err;
|
||||
(void)file;
|
||||
(void)line;
|
||||
WOLFSSL_MSG("Not compiled in debug mode");
|
||||
#else
|
||||
WOLFSSL_ERROR_LINE(err, wolfSSL_ERR_sys_func(fun), (unsigned int)line,
|
||||
file, NULL);
|
||||
#endif
|
||||
(void)lib;
|
||||
}
|
||||
|
||||
|
||||
unsigned long wolfSSL_ERR_get_error_line_data(const char** file, int* line,
|
||||
const char** data, int *flags)
|
||||
{
|
||||
@@ -14228,6 +14316,8 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD *md)
|
||||
(void)line;
|
||||
(void)data;
|
||||
(void)flags;
|
||||
WOLFSSL_STUB("wolfSSL_ERR_get_error_line_data");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
47
tests/api.c
47
tests/api.c
@@ -14814,6 +14814,52 @@ static void test_wolfSSL_pkcs8(void)
|
||||
}
|
||||
|
||||
|
||||
static void test_wolfSSL_ERR_put_error(void)
|
||||
{
|
||||
#if defined(OPENSSL_EXTRA) && defined(DEBUG_WOLFSSL)
|
||||
const char* file;
|
||||
int line;
|
||||
|
||||
printf(testingFmt, "wolfSSL_ERR_put_error()");
|
||||
|
||||
ERR_put_error(0,SYS_F_ACCEPT, 0, "this file", 0);
|
||||
AssertIntEQ(ERR_get_error_line(&file, &line), 0);
|
||||
ERR_put_error(0,SYS_F_BIND, 1, "this file", 1);
|
||||
AssertIntEQ(ERR_get_error_line(&file, &line), 1);
|
||||
ERR_put_error(0,SYS_F_CONNECT, 2, "this file", 2);
|
||||
AssertIntEQ(ERR_get_error_line(&file, &line), 2);
|
||||
ERR_put_error(0,SYS_F_FOPEN, 3, "this file", 3);
|
||||
AssertIntEQ(ERR_get_error_line(&file, &line), 3);
|
||||
ERR_put_error(0,SYS_F_FREAD, 4, "this file", 4);
|
||||
AssertIntEQ(ERR_get_error_line(&file, &line), 4);
|
||||
ERR_put_error(0,SYS_F_GETADDRINFO, 5, "this file", 5);
|
||||
AssertIntEQ(ERR_get_error_line(&file, &line), 5);
|
||||
ERR_put_error(0,SYS_F_GETSOCKOPT, 6, "this file", 6);
|
||||
AssertIntEQ(ERR_get_error_line(&file, &line), 6);
|
||||
ERR_put_error(0,SYS_F_GETSOCKNAME, 7, "this file", 7);
|
||||
AssertIntEQ(ERR_get_error_line(&file, &line), 7);
|
||||
ERR_put_error(0,SYS_F_GETHOSTBYNAME, 8, "this file", 8);
|
||||
AssertIntEQ(ERR_get_error_line(&file, &line), 8);
|
||||
ERR_put_error(0,SYS_F_GETNAMEINFO, 9, "this file", 9);
|
||||
AssertIntEQ(ERR_get_error_line(&file, &line), 9);
|
||||
ERR_put_error(0,SYS_F_GETSERVBYNAME, 10, "this file", 10);
|
||||
AssertIntEQ(ERR_get_error_line(&file, &line), 10);
|
||||
ERR_put_error(0,SYS_F_IOCTLSOCKET, 11, "this file", 11);
|
||||
AssertIntEQ(ERR_get_error_line(&file, &line), 11);
|
||||
ERR_put_error(0,SYS_F_LISTEN, 12, "this file", 12);
|
||||
AssertIntEQ(ERR_get_error_line(&file, &line), 12);
|
||||
ERR_put_error(0,SYS_F_OPENDIR, 13, "this file", 13);
|
||||
AssertIntEQ(ERR_get_error_line(&file, &line), 13);
|
||||
ERR_put_error(0,SYS_F_SETSOCKOPT, 14, "this file", 14);
|
||||
AssertIntEQ(ERR_get_error_line(&file, &line), 14);
|
||||
ERR_put_error(0,SYS_F_SOCKET, 15, "this file", 15);
|
||||
AssertIntEQ(ERR_get_error_line(&file, &line), 15);
|
||||
|
||||
printf(resultFmt, passed);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
static void test_no_op_functions(void)
|
||||
{
|
||||
#if defined(OPENSSL_EXTRA)
|
||||
@@ -15613,6 +15659,7 @@ void ApiTest(void)
|
||||
test_wolfSSL_CTX_set_srp_password();
|
||||
test_wolfSSL_pseudo_rand();
|
||||
test_wolfSSL_pkcs8();
|
||||
test_wolfSSL_ERR_put_error();
|
||||
|
||||
/* test the no op functions for compatibility */
|
||||
test_no_op_functions();
|
||||
|
@@ -429,6 +429,26 @@ typedef WOLFSSL_X509_STORE_CTX X509_STORE_CTX;
|
||||
#define SSL_CTX_set_psk_server_callback wolfSSL_CTX_set_psk_server_callback
|
||||
#define SSL_set_psk_server_callback wolfSSL_set_psk_server_callback
|
||||
|
||||
/* system file ints for ERR_put_error */
|
||||
#define SYS_F_ACCEPT WOLFSSL_SYS_ACCEPT
|
||||
#define SYS_F_BIND WOLFSSL_SYS_BIND
|
||||
#define SYS_F_CONNECT WOLFSSL_SYS_CONNECT
|
||||
#define SYS_F_FOPEN WOLFSSL_SYS_FOPEN
|
||||
#define SYS_F_FREAD WOLFSSL_SYS_FREAD
|
||||
#define SYS_F_GETADDRINFO WOLFSSL_SYS_GETADDRINFO
|
||||
#define SYS_F_GETSOCKOPT WOLFSSL_SYS_GETSOCKOPT
|
||||
#define SYS_F_GETSOCKNAME WOLFSSL_SYS_GETSOCKNAME
|
||||
#define SYS_F_OPENDIR WOLFSSL_SYS_OPENDIR
|
||||
#define SYS_F_SETSOCKOPT WOLFSSL_SYS_SETSOCKOPT
|
||||
#define SYS_F_SOCKET WOLFSSL_SYS_SOCKET
|
||||
#define SYS_F_GETHOSTBYNAME WOLFSSL_SYS_GETHOSTBYNAME
|
||||
#define SYS_F_GETNAMEINFO WOLFSSL_SYS_GETNAMEINFO
|
||||
#define SYS_F_GETSERVBYNAME WOLFSSL_SYS_GETSERVBYNAME
|
||||
#define SYS_F_IOCTLSOCKET WOLFSSL_SYS_IOCTLSOCKET
|
||||
#define SYS_F_LISTEN WOLFSSL_SYS_LISTEN
|
||||
|
||||
#define ERR_put_error wolfSSL_ERR_put_error
|
||||
#define ERR_get_error_line wolfSSL_ERR_get_error_line
|
||||
#define ERR_get_error_line_data wolfSSL_ERR_get_error_line_data
|
||||
|
||||
#define ERR_get_error wolfSSL_ERR_get_error
|
||||
|
@@ -1274,6 +1274,9 @@ enum {
|
||||
|
||||
#endif
|
||||
|
||||
WOLFSSL_API void wolfSSL_ERR_put_error(int lib, int fun, int err,
|
||||
const char* file, int line);
|
||||
WOLFSSL_API unsigned long wolfSSL_ERR_get_error_line(const char**, int*);
|
||||
WOLFSSL_API unsigned long wolfSSL_ERR_get_error_line_data(const char**, int*,
|
||||
const char**, int *);
|
||||
|
||||
@@ -2333,6 +2336,25 @@ WOLFSSL_API char* wolfSSL_ASN1_TIME_to_string(WOLFSSL_ASN1_TIME* time,
|
||||
|
||||
#ifdef OPENSSL_EXTRA
|
||||
|
||||
enum {
|
||||
WOLFSSL_SYS_ACCEPT = 0,
|
||||
WOLFSSL_SYS_BIND,
|
||||
WOLFSSL_SYS_CONNECT,
|
||||
WOLFSSL_SYS_FOPEN,
|
||||
WOLFSSL_SYS_FREAD,
|
||||
WOLFSSL_SYS_GETADDRINFO,
|
||||
WOLFSSL_SYS_GETSOCKOPT,
|
||||
WOLFSSL_SYS_GETSOCKNAME,
|
||||
WOLFSSL_SYS_GETHOSTBYNAME,
|
||||
WOLFSSL_SYS_GETNAMEINFO,
|
||||
WOLFSSL_SYS_GETSERVBYNAME,
|
||||
WOLFSSL_SYS_IOCTLSOCKET,
|
||||
WOLFSSL_SYS_LISTEN,
|
||||
WOLFSSL_SYS_OPENDIR,
|
||||
WOLFSSL_SYS_SETSOCKOPT,
|
||||
WOLFSSL_SYS_SOCKET
|
||||
};
|
||||
|
||||
/* Object functions */
|
||||
WOLFSSL_API const char * wolfSSL_OBJ_nid2sn(int n);
|
||||
WOLFSSL_API int wolfSSL_OBJ_obj2nid(const WOLFSSL_ASN1_OBJECT *o);
|
||||
|
Reference in New Issue
Block a user