diff --git a/.github/workflows/CI-win.yml b/.github/workflows/CI-win.yml index a96e250a..149f9ca0 100644 --- a/.github/workflows/CI-win.yml +++ b/.github/workflows/CI-win.yml @@ -26,6 +26,7 @@ jobs: - {toolchain: Visual Studio 17 2022, arch: Win32, server: 2022} - {toolchain: Visual Studio 17 2022, arch: x64, server: 2022} - {toolchain: Visual Studio 17 2022, arch: x64, server: 2022, config: ASAN} + - {toolchain: Visual Studio 17 2022, arch: x64, server: 2022, config: UBSAN} - {toolchain: Visual Studio 17 2022, arch: arm64, server: 2022} steps: - uses: actions/checkout@v2 @@ -36,7 +37,8 @@ jobs: run: cmake -S . -B build -DBUILD_TESTING=ON -G "${{ matrix.config.toolchain }}" -A ${{ matrix.config.arch }} - ${{ matrix.config.config == 'ASAN' && '-DASAN=on -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded' || '' }} + ${{ matrix.config.config == 'ASAN' && '-DASAN=on -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded' || + matrix.config.config == 'UBSAN' && '-DUBSAN=on' || '' }} cmake --build build --config RelWithDebInfo diff --git a/.github/workflows/sanitizer.yml b/.github/workflows/sanitizer.yml index 78052d0c..4fca161d 100644 --- a/.github/workflows/sanitizer.yml +++ b/.github/workflows/sanitizer.yml @@ -95,3 +95,29 @@ jobs: - name: UBSAN Test run: | ./build-ubsan/uv_run_tests_a + + sanitizers-windows: + runs-on: windows-2022 + steps: + - uses: actions/checkout@v2 + - name: Setup + run: | + choco install ninja + + # Note: clang shipped with VS2022 has an issue where the UBSAN runtime doesn't link. + - name: Install LLVM and Clang + uses: KyleMayes/install-llvm-action@v1 + with: + version: "17" + + - name: Envinfo + run: npx envinfo + + - name: UBSAN Build + run: | + mkdir build-ubsan + cmake -B build-ubsan -G Ninja -DBUILD_TESTING=ON -DUBSAN=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=clang + cmake --build build-ubsan + - name: UBSAN Test + run: | + ./build-ubsan/uv_run_tests_a diff --git a/test/test-tcp-close-reset.c b/test/test-tcp-close-reset.c index c9ac4d48..74941789 100644 --- a/test/test-tcp-close-reset.c +++ b/test/test-tcp-close-reset.c @@ -81,7 +81,7 @@ static void do_close(uv_tcp_t* handle) { ASSERT_OK(r); #ifdef _WIN32 ASSERT_PTR_NE(fd, INVALID_FD); - ASSERT_OK(shutdown(fd, SD_BOTH)); + ASSERT_OK(shutdown((SOCKET)fd, SD_BOTH)); #else ASSERT_NE(fd, INVALID_FD); ASSERT_OK(shutdown(fd, SHUT_RDWR));