wolfssl/test.h: in wolfsentry_setup(), add lock-unlock wrap before wolfsentry_route_get_main_table() (enforced by wolfSentry 1.3+, and was always required for thread safety).

This commit is contained in:
Daniel Pouzzner
2023-05-21 10:51:24 -05:00
parent a06bd777c0
commit 3e14b34bdc

View File

@ -1684,6 +1684,16 @@ static int wolfsentry_setup(
{ {
struct wolfsentry_route_table *table; struct wolfsentry_route_table *table;
#ifdef WOLFSENTRY_THREADSAFE
ret = WOLFSENTRY_SHARED_EX(*_wolfsentry);
if (ret < 0) {
fprintf(stderr, "wolfsentry shared lock op failed: "
WOLFSENTRY_ERROR_FMT ".\n",
WOLFSENTRY_ERROR_FMT_ARGS(ret));
return ret;
}
#endif
if ((ret = wolfsentry_route_get_main_table( if ((ret = wolfsentry_route_get_main_table(
WOLFSENTRY_CONTEXT_ARGS_OUT_EX(*_wolfsentry), WOLFSENTRY_CONTEXT_ARGS_OUT_EX(*_wolfsentry),
&table)) < 0) &table)) < 0)
@ -1691,6 +1701,11 @@ static int wolfsentry_setup(
fprintf(stderr, "wolfsentry_route_get_main_table() returned " fprintf(stderr, "wolfsentry_route_get_main_table() returned "
WOLFSENTRY_ERROR_FMT "\n", WOLFSENTRY_ERROR_FMT "\n",
WOLFSENTRY_ERROR_FMT_ARGS(ret)); WOLFSENTRY_ERROR_FMT_ARGS(ret));
#ifdef WOLFSENTRY_THREADSAFE
WOLFSENTRY_WARN_ON_FAILURE(
wolfsentry_context_unlock(
WOLFSENTRY_CONTEXT_ARGS_OUT_EX(*_wolfsentry)));
#endif
return ret; return ret;
} }
@ -1708,6 +1723,11 @@ static int wolfsentry_setup(
"wolfsentry_route_table_default_policy_set() returned " "wolfsentry_route_table_default_policy_set() returned "
WOLFSENTRY_ERROR_FMT "\n", WOLFSENTRY_ERROR_FMT "\n",
WOLFSENTRY_ERROR_FMT_ARGS(ret)); WOLFSENTRY_ERROR_FMT_ARGS(ret));
#ifdef WOLFSENTRY_THREADSAFE
WOLFSENTRY_WARN_ON_FAILURE(
wolfsentry_context_unlock(
WOLFSENTRY_CONTEXT_ARGS_OUT_EX(*_wolfsentry)));
#endif
return ret; return ret;
} }
@ -1742,6 +1762,11 @@ static int wolfsentry_setup(
fprintf(stderr, "wolfsentry_route_insert() returned " fprintf(stderr, "wolfsentry_route_insert() returned "
WOLFSENTRY_ERROR_FMT "\n", WOLFSENTRY_ERROR_FMT "\n",
WOLFSENTRY_ERROR_FMT_ARGS(ret)); WOLFSENTRY_ERROR_FMT_ARGS(ret));
#ifdef WOLFSENTRY_THREADSAFE
WOLFSENTRY_WARN_ON_FAILURE(
wolfsentry_context_unlock(
WOLFSENTRY_CONTEXT_ARGS_OUT_EX(*_wolfsentry)));
#endif
return ret; return ret;
} }
} else if (WOLFSENTRY_MASKIN_BITS(route_flags, WOLFSENTRY_ROUTE_FLAG_DIRECTION_IN)) { } else if (WOLFSENTRY_MASKIN_BITS(route_flags, WOLFSENTRY_ROUTE_FLAG_DIRECTION_IN)) {
@ -1757,6 +1782,11 @@ static int wolfsentry_setup(
"wolfsentry_route_table_default_policy_set() returned " "wolfsentry_route_table_default_policy_set() returned "
WOLFSENTRY_ERROR_FMT "\n", WOLFSENTRY_ERROR_FMT "\n",
WOLFSENTRY_ERROR_FMT_ARGS(ret)); WOLFSENTRY_ERROR_FMT_ARGS(ret));
#ifdef WOLFSENTRY_THREADSAFE
WOLFSENTRY_WARN_ON_FAILURE(
wolfsentry_context_unlock(
WOLFSENTRY_CONTEXT_ARGS_OUT_EX(*_wolfsentry)));
#endif
return ret; return ret;
} }
@ -1791,9 +1821,19 @@ static int wolfsentry_setup(
fprintf(stderr, "wolfsentry_route_insert() returned " fprintf(stderr, "wolfsentry_route_insert() returned "
WOLFSENTRY_ERROR_FMT "\n", WOLFSENTRY_ERROR_FMT "\n",
WOLFSENTRY_ERROR_FMT_ARGS(ret)); WOLFSENTRY_ERROR_FMT_ARGS(ret));
#ifdef WOLFSENTRY_THREADSAFE
WOLFSENTRY_WARN_ON_FAILURE(
wolfsentry_context_unlock(
WOLFSENTRY_CONTEXT_ARGS_OUT_EX(*_wolfsentry)));
#endif
return ret; return ret;
} }
} }
#ifdef WOLFSENTRY_THREADSAFE
WOLFSENTRY_WARN_ON_FAILURE(
wolfsentry_context_unlock(
WOLFSENTRY_CONTEXT_ARGS_OUT_EX(*_wolfsentry)));
#endif
} }
#if defined(WOLFSENTRY_THREADSAFE) && defined(HAVE_WOLFSENTRY_API_0v8) #if defined(WOLFSENTRY_THREADSAFE) && defined(HAVE_WOLFSENTRY_API_0v8)