Skip to content

Commit e99bbf9

Browse files
authored
Merge pull request #7875 from douzzer/20240814-debug-trace-errcodes-MP
20240814-debug-trace-errcodes-MP
2 parents 1a0bf42 + 2448d48 commit e99bbf9

16 files changed

Lines changed: 100 additions & 50 deletions

File tree

linuxkm/linuxkm_wc_port.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -632,6 +632,10 @@
632632
#endif
633633
#endif
634634

635+
#ifdef WOLFSSL_DEBUG_BACKTRACE_ERROR_CODES
636+
typeof(dump_stack) *dump_stack;
637+
#endif
638+
635639
const void *_last_slot;
636640
};
637641

@@ -777,6 +781,10 @@
777781
#endif
778782
#endif
779783

784+
#ifdef WOLFSSL_DEBUG_BACKTRACE_ERROR_CODES
785+
#define dump_stack (wolfssl_linuxkm_get_pie_redirect_table()->dump_stack)
786+
#endif
787+
780788
#endif /* __PIE__ */
781789

782790
#endif /* USE_WOLFSSL_LINUXKM_PIE_REDIRECT_TABLE */

linuxkm/module_hooks.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -580,6 +580,10 @@ static int set_up_wolfssl_linuxkm_pie_redirect_table(void) {
580580
#endif
581581
#endif
582582

583+
#ifdef WOLFSSL_DEBUG_BACKTRACE_ERROR_CODES
584+
wolfssl_linuxkm_pie_redirect_table.dump_stack = dump_stack;
585+
#endif
586+
583587
/* runtime assert that the table has no null slots after initialization. */
584588
{
585589
unsigned long *i;

src/internal.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25145,7 +25145,7 @@ const char* wolfSSL_ERR_reason_error_string(unsigned long e)
2514525145
}
2514625146

2514725147
/* pass to wolfCrypt */
25148-
if (error < MAX_CODE_E && error > MIN_CODE_E) {
25148+
if (error <= WC_FIRST_E && error >= WC_LAST_E) {
2514925149
return wc_GetErrorString(error);
2515025150
}
2515125151

src/ssl.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15486,7 +15486,9 @@ int wolfSSL_ERR_GET_REASON(unsigned long err)
1548615486
ret = 0 - ret; /* setting as negative value */
1548715487
/* wolfCrypt range is less than MAX (-100)
1548815488
wolfSSL range is MIN (-300) and lower */
15489-
if (ret < MAX_CODE_E && ret > MIN_CODE_E) {
15489+
if ((ret <= WC_FIRST_E && ret >= WC_LAST_E) ||
15490+
(ret <= WOLFSSL_FIRST_E && ret >= WOLFSSL_LAST_E))
15491+
{
1549015492
return ret;
1549115493
}
1549215494
else {

support/gen-debug-trace-error-codes.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ BEGIN {
1212
print("#undef WOLFSSL_DEBUG_TRACE_ERROR_CODES_H") >> "wolfssl/debug-untrace-error-codes.h";
1313
}
1414
{
15-
if (match($0, "^[[:space:]]+([A-Z][A-Z0-9_]+)[[:space:]]*=[[:space:]]*(-[0-9]+)[,[:space:]]")) {
15+
if (match($0, "^[[:space:]]+([A-Z][A-Z0-9_]+)[[:space:]]*=[[:space:]]*(-[0-9]+)([,[:space:]]|$)")) {
1616
1717
# for mawkward compatibility -- gawk allows errcode_a as the 3rd arg to match().
1818
gsub("^[[:space:]]+", "", $0);

wolfcrypt/src/ecc.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2491,8 +2491,7 @@ static int _ecc_projective_dbl_point(ecc_point *P, ecc_point *R, mp_int* a,
24912491
}
24922492
if (err == MP_OKAY && mp_iszero((MP_INT_SIZE*)t2)) {
24932493
/* T2 = X * X */
2494-
if (err == MP_OKAY)
2495-
err = mp_sqr(x, t2);
2494+
err = mp_sqr(x, t2);
24962495
if (err == MP_OKAY)
24972496
err = mp_montgomery_reduce(t2, modulus, mp);
24982497
/* T1 = T2 + T1 */
@@ -2506,8 +2505,7 @@ static int _ecc_projective_dbl_point(ecc_point *P, ecc_point *R, mp_int* a,
25062505
/* use "a" in calc */
25072506

25082507
/* T2 = T1 * T1 */
2509-
if (err == MP_OKAY)
2510-
err = mp_sqr(t1, t2);
2508+
err = mp_sqr(t1, t2);
25112509
if (err == MP_OKAY)
25122510
err = mp_montgomery_reduce(t2, modulus, mp);
25132511
/* T1 = T2 * a */

wolfcrypt/src/error.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,18 @@ const char* wc_GetErrorString(int error)
4444
{
4545
switch (error) {
4646

47+
case MP_MEM :
48+
return "MP integer dynamic memory allocation failed";
49+
50+
case MP_VAL :
51+
return "MP integer invalid argument";
52+
53+
case MP_WOULDBLOCK :
54+
return "MP integer non-blocking operation would block";
55+
56+
case MP_NOT_INF:
57+
return "MP point not at infinity";
58+
4759
case OPEN_RAN_E :
4860
return "opening random device error";
4961

wolfcrypt/src/logging.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1721,6 +1721,14 @@ void WOLFSSL_ERROR_MSG(const char* msg)
17211721

17221722
#ifdef WOLFSSL_DEBUG_BACKTRACE_ERROR_CODES
17231723

1724+
#ifdef WOLFSSL_LINUXKM
1725+
1726+
void wc_backtrace_render(void) {
1727+
dump_stack();
1728+
}
1729+
1730+
#else /* !WOLFSSL_LINUXKM */
1731+
17241732
#include <backtrace-supported.h>
17251733

17261734
#if BACKTRACE_SUPPORTED != 1
@@ -1848,5 +1856,6 @@ void wc_backtrace_render(void) {
18481856

18491857
wc_UnLockMutex(&backtrace_mutex);
18501858
}
1859+
#endif /* !WOLFSSL_LINUXKM */
18511860

18521861
#endif /* WOLFSSL_DEBUG_BACKTRACE_ERROR_CODES */

wolfcrypt/src/sp_int.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ This library provides single precision (SP) integer math functions.
3131
#endif
3232

3333
#include <wolfssl/wolfcrypt/settings.h>
34+
#include <wolfssl/wolfcrypt/error-crypt.h>
3435

3536
#if defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL)
3637

wolfcrypt/src/tfm.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5685,9 +5685,9 @@ int mp_rand_prime(mp_int* a, int len, WC_RNG* rng, void* heap)
56855685

56865686
err = fp_randprime(a, len, rng, heap);
56875687
switch(err) {
5688-
case FP_VAL:
5688+
case WC_NO_ERR_TRACE(MP_VAL):
56895689
return MP_VAL;
5690-
case FP_MEM:
5690+
case WC_NO_ERR_TRACE(MP_MEM):
56915691
return MP_MEM;
56925692
default:
56935693
break;

0 commit comments

Comments
 (0)