From 43b1365615015d76c5d48226c9efb845814968da Mon Sep 17 00:00:00 2001 From: RuiL <112430389+ruiliio@users.noreply.github.com> Date: Mon, 14 Apr 2025 19:23:05 -0700 Subject: [PATCH 1/9] Create asan.yml --- .github/workflows/asan.yml | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 .github/workflows/asan.yml diff --git a/.github/workflows/asan.yml b/.github/workflows/asan.yml new file mode 100644 index 00000000..99e15362 --- /dev/null +++ b/.github/workflows/asan.yml @@ -0,0 +1,37 @@ +name: wolfProvider asan Test +# Controls when the workflow will run +on: + # Triggers the workflow on push or pull request events but only for the "main" branch + push: + branches: [ "master", "main" ] + pull_request: + branches: [ "*" ] + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains make check + make_check: + name: asan test + runs-on: ubuntu-latest # The type of runner that the job will run on + + # This should be a safe limit for the tests to run. + timeout-minutes: 10 + # Steps represent a sequence of tasks that will be executed as part of the job + 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 From bc44494b519d09977b1e0e4e41a38e56244b3091 Mon Sep 17 00:00:00 2001 From: ruiliio Date: Mon, 14 Apr 2025 19:31:20 -0700 Subject: [PATCH 2/9] Fix memory leak in rsa unit test --- test/test_rsa.c | 1 + 1 file changed, 1 insertion(+) 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; } From 44165bb6480a0b6955c8d5ba2fbc08afd59f39d4 Mon Sep 17 00:00:00 2001 From: RuiL <112430389+ruiliio@users.noreply.github.com> Date: Mon, 14 Apr 2025 19:48:03 -0700 Subject: [PATCH 3/9] Update asan.yml --- .github/workflows/asan.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/asan.yml b/.github/workflows/asan.yml index 99e15362..99d7dfac 100644 --- a/.github/workflows/asan.yml +++ b/.github/workflows/asan.yml @@ -27,7 +27,7 @@ jobs: - name: Test wolfProvider run: | - WOLFPROV_CONFIG_CFLAGS=-static-libasan -fsanitize=address,undefined -g ./scripts/build-wolfprovider.sh + WOLFPROV_CONFIG_CFLAGS="-static-libasan -fsanitize=address,undefined -g" ./scripts/build-wolfprovider.sh - name: Print errors if: ${{ failure() }} From b22ec6c2db655dc90786eff58a94e6e43e5c24ba Mon Sep 17 00:00:00 2001 From: RuiL <112430389+ruiliio@users.noreply.github.com> Date: Mon, 14 Apr 2025 19:49:53 -0700 Subject: [PATCH 4/9] Update asan.yml --- .github/workflows/asan.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/asan.yml b/.github/workflows/asan.yml index 99d7dfac..88ef8e0b 100644 --- a/.github/workflows/asan.yml +++ b/.github/workflows/asan.yml @@ -1,4 +1,4 @@ -name: wolfProvider asan Test +name: Asan Test # Controls when the workflow will run on: # Triggers the workflow on push or pull request events but only for the "main" branch From 6efe23799f5502c2d1b0e62a9df49637f57eed8c Mon Sep 17 00:00:00 2001 From: RuiL <112430389+ruiliio@users.noreply.github.com> Date: Mon, 14 Apr 2025 20:01:03 -0700 Subject: [PATCH 5/9] Update asan.yml --- .github/workflows/asan.yml | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/workflows/asan.yml b/.github/workflows/asan.yml index 88ef8e0b..496f7610 100644 --- a/.github/workflows/asan.yml +++ b/.github/workflows/asan.yml @@ -1,26 +1,23 @@ name: Asan Test -# Controls when the workflow will run + +# START OF COMMON SECTION on: - # Triggers the workflow on push or pull request events but only for the "main" branch push: - branches: [ "master", "main" ] + branches: [ "*" ] pull_request: branches: [ "*" ] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true +# END OF COMMON SECTION -# A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: - # This workflow contains make check make_check: name: asan test - runs-on: ubuntu-latest # The type of runner that the job will run on - + runs-on: ubuntu-latest # This should be a safe limit for the tests to run. timeout-minutes: 10 - # Steps represent a sequence of tasks that will be executed as part of the job steps: - uses: actions/checkout@v4 name: Checkout wolfProvider From 1736ff6b9d84898fa6e987512a7453c4d1adadb3 Mon Sep 17 00:00:00 2001 From: ruiliio Date: Mon, 14 Apr 2025 20:33:36 -0700 Subject: [PATCH 6/9] Add CFLAGS options for build script --- scripts/utils-wolfprovider.sh | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) 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 From 383e78f854b0e2ecdc0829af7b7d9b3e864678a0 Mon Sep 17 00:00:00 2001 From: RuiL <112430389+ruiliio@users.noreply.github.com> Date: Mon, 14 Apr 2025 20:47:01 -0700 Subject: [PATCH 7/9] Update asan.yml --- .github/workflows/asan.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/asan.yml b/.github/workflows/asan.yml index 496f7610..c47c9968 100644 --- a/.github/workflows/asan.yml +++ b/.github/workflows/asan.yml @@ -24,7 +24,7 @@ jobs: - name: Test wolfProvider run: | - WOLFPROV_CONFIG_CFLAGS="-static-libasan -fsanitize=address,undefined -g" ./scripts/build-wolfprovider.sh + CFLAGS="-static-libasan -fsanitize=address,undefined -g" ./scripts/build-wolfprovider.sh - name: Print errors if: ${{ failure() }} From dc84734b5d924cf87d486ed76cabe76f26857650 Mon Sep 17 00:00:00 2001 From: ruiliio Date: Mon, 14 Apr 2025 20:56:34 -0700 Subject: [PATCH 8/9] Revert build script changes --- scripts/utils-wolfprovider.sh | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/scripts/utils-wolfprovider.sh b/scripts/utils-wolfprovider.sh index fa9eabd9..faf4e485 100755 --- a/scripts/utils-wolfprovider.sh +++ b/scripts/utils-wolfprovider.sh @@ -24,9 +24,6 @@ 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 @@ -52,14 +49,13 @@ install_wolfprov() { if [ ! -e "${WOLFPROV_SOURCE_DIR}/configure" ]; then ./autogen.sh >>$LOG_FILE 2>&1 fi - if [ "$WOLFPROV_DEBUG" = "1" ]; then - WOLFPROV_CONFIG_OPTS+=" --enable-debug" + ./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=$? 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 From 4e5f0a1fa5d6942f8afe8b92d2a30c0ec14ea092 Mon Sep 17 00:00:00 2001 From: ruiliio Date: Mon, 14 Apr 2025 21:45:26 -0700 Subject: [PATCH 9/9] Add ASAN workflow for unit tests, fix memory leak in rsa unit test --- .github/workflows/asan.yml | 2 +- scripts/utils-wolfprovider.sh | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.github/workflows/asan.yml b/.github/workflows/asan.yml index c47c9968..496f7610 100644 --- a/.github/workflows/asan.yml +++ b/.github/workflows/asan.yml @@ -24,7 +24,7 @@ jobs: - name: Test wolfProvider run: | - CFLAGS="-static-libasan -fsanitize=address,undefined -g" ./scripts/build-wolfprovider.sh + WOLFPROV_CONFIG_CFLAGS="-static-libasan -fsanitize=address,undefined -g" ./scripts/build-wolfprovider.sh - name: Print errors if: ${{ failure() }} 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