diff --git a/.github/workflows/asan.yml b/.github/workflows/asan.yml new file mode 100644 index 00000000..496f7610 --- /dev/null +++ b/.github/workflows/asan.yml @@ -0,0 +1,34 @@ +name: Asan Test + +# START OF COMMON SECTION +on: + push: + branches: [ "*" ] + pull_request: + branches: [ "*" ] + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true +# END OF COMMON SECTION + +jobs: + make_check: + name: asan test + runs-on: ubuntu-latest + # This should be a safe limit for the tests to run. + timeout-minutes: 10 + steps: + - uses: actions/checkout@v4 + name: Checkout wolfProvider + + - name: Test wolfProvider + run: | + WOLFPROV_CONFIG_CFLAGS="-static-libasan -fsanitize=address,undefined -g" ./scripts/build-wolfprovider.sh + + - name: Print errors + if: ${{ failure() }} + run: | + if [ -f test-suite.log ] ; then + cat test-suite.log + fi diff --git a/scripts/utils-wolfprovider.sh b/scripts/utils-wolfprovider.sh index faf4e485..fa9eabd9 100755 --- a/scripts/utils-wolfprovider.sh +++ b/scripts/utils-wolfprovider.sh @@ -24,6 +24,9 @@ source ${SCRIPT_DIR}/utils-wolfssl.sh WOLFPROV_SOURCE_DIR=${SCRIPT_DIR}/.. WOLFPROV_INSTALL_DIR=${SCRIPT_DIR}/../wolfprov-install +WOLFPROV_CONFIG_OPTS=${WOLFPROV_CONFIG_OPTS:-"--with-openssl=${OPENSSL_INSTALL_DIR} --with-wolfssl=${WOLFSSL_INSTALL_DIR} --prefix=${WOLFPROV_INSTALL_DIR}"} +WOLFPROV_CONFIG_CFLAGS=${WOLFPROV_CONFIG_CFLAGS:-''} + if [ "$WOLFSSL_ISFIPS" -eq "1" ] || [ -n "$WOLFSSL_FIPS_BUNDLE" ]; then WOLFPROV_CONFIG=${WOLFPROV_CONFIG:-"$WOLFPROV_SOURCE_DIR/provider-fips.conf"} else @@ -49,13 +52,14 @@ install_wolfprov() { if [ ! -e "${WOLFPROV_SOURCE_DIR}/configure" ]; then ./autogen.sh >>$LOG_FILE 2>&1 fi + if [ "$WOLFPROV_DEBUG" = "1" ]; then - ./configure --with-openssl=${OPENSSL_INSTALL_DIR} --with-wolfssl=${WOLFSSL_INSTALL_DIR} --prefix=${WOLFPROV_INSTALL_DIR} --enable-debug >>$LOG_FILE 2>&1 - RET=$? - else - ./configure --with-openssl=${OPENSSL_INSTALL_DIR} --with-wolfssl=${WOLFSSL_INSTALL_DIR} --prefix=${WOLFPROV_INSTALL_DIR} >>$LOG_FILE 2>&1 - RET=$? + WOLFPROV_CONFIG_OPTS+=" --enable-debug" fi + + ./configure ${WOLFPROV_CONFIG_OPTS} CFLAGS="${WOLFPROV_CONFIG_CFLAGS}" >>$LOG_FILE 2>&1 + RET=$? + if [ $RET != 0 ]; then printf "\n\n...\n" tail -n 40 $LOG_FILE diff --git a/test/test_rsa.c b/test/test_rsa.c index 323ea7ae..695a0451 100644 --- a/test/test_rsa.c +++ b/test/test_rsa.c @@ -868,6 +868,7 @@ int test_rsa_get_params(void *data) BN_free(eCmd); BN_free(eRet); EVP_PKEY_free(pkey); + EVP_PKEY_CTX_free(ctx); return err; }