@@ -12,6 +12,10 @@ concurrency:
1212 cancel-in-progress : true
1313# END OF COMMON SECTION
1414
15+ # clang has better sanitizer support
16+ env :
17+ CC : clang
18+
1519jobs :
1620 build_wolfssl :
1721 name : Build wolfSSL
3135 uses : wolfSSL/actions-build-autotools-project@v1
3236 with :
3337 path : wolfssl
34- configure : --enable-nginx ${{ env.wolf_debug_flags }}
38+ configure : >-
39+ --enable-nginx --enable-curve25519 --enable-ed25519 ${{ env.wolf_debug_flags }}
3540 install : true
3641
3742 - name : tar build-dir
5055 matrix :
5156 include :
5257 # in general we want to pass all tests that match *ssl*
58+ - ref : 1.28.1
59+ test-ref : 0fccfcef1278263416043e0bbb3e0116b84026e4
60+ # Following tests pass with sanitizer on
61+ sanitize-ok : >-
62+ h2_ssl_proxy_cache.t h2_ssl.t h2_ssl_variables.t
63+ h2_ssl_verify_client.t mail_imap_ssl.t mail_ssl_session_reuse.t
64+ mail_ssl.t proxy_ssl_certificate_cache.t
65+ proxy_ssl_certificate_empty.t proxy_ssl_certificate.t
66+ proxy_ssl_certificate_vars.t proxy_ssl_name.t ssl_cache_reload.t
67+ ssl_certificate_aux.t ssl_certificate_cache.t
68+ ssl_certificate_chain.t ssl_certificates.t ssl_certificate.t
69+ ssl_client_escaped_cert.t ssl_crl.t ssl_curve.t ssl_ocsp.t
70+ ssl_password_file.t ssl_proxy_upgrade.t ssl_reject_handshake.t
71+ ssl_session_reuse.t ssl_session_ticket_key.t ssl_sni_protocols.t
72+ ssl_sni_reneg.t ssl_sni_sessions.t ssl_sni.t ssl_stapling.t ssl.t
73+ ssl_verify_client.t ssl_verify_client_trusted.t ssl_verify_depth.t
74+ stream_proxy_ssl_certificate_cache.t stream_proxy_ssl_certificate.t
75+ stream_proxy_ssl_certificate_vars.t
76+ stream_proxy_ssl_name_complex.t stream_proxy_ssl_name.t
77+ stream_ssl_alpn.t stream_ssl_certificate_cache.t
78+ stream_ssl_certificate.t stream_ssl_ocsp.t stream_ssl_preread_alpn.t
79+ stream_ssl_preread_protocol.t stream_ssl_preread.t
80+ stream_ssl_reject_handshake.t stream_ssl_session_reuse.t
81+ stream_ssl_sni_protocols.t stream_ssl_stapling.t stream_ssl.t
82+ stream_ssl_variables.t stream_ssl_verify_client.t
83+ stream_upstream_zone_ssl.t upstream_zone_ssl.t
84+ uwsgi_ssl_certificate.t uwsgi_ssl_certificate_vars.t
85+ # Following tests do not pass with sanitizer on (with OpenSSL too)
86+ sanitize-not-ok : >-
87+ grpc_ssl.t h2_proxy_request_buffering_ssl.t h2_proxy_ssl.t
88+ proxy_request_buffering_ssl.t proxy_ssl_conf_command.t
89+ proxy_ssl_keepalive.t proxy_ssl.t proxy_ssl_verify.t ssl_cache.t
90+ stream_proxy_protocol_ssl.t stream_proxy_ssl_conf_command.t
91+ stream_proxy_ssl.t stream_proxy_ssl_verify.t
92+
5393 - ref : 1.25.0
5494 test-ref : 5b2894ea1afd01a26c589ce11f310df118e42592
5595 # Following tests pass with sanitizer on
@@ -120,30 +160,19 @@ jobs:
120160 - name : untar build-dir
121161 run : tar -xf build-dir.tgz
122162
123- - name : Install dependencies
124- run : |
125- sudo cpan -iT Proc::Find
163+ - name : Openssl version
164+ run : openssl version -a
126165
127- # Locking in the version of SSLeay used with testing
128- - name : Download and install Net::SSLeay 1.94 manually
129- run : |
130- curl -LO https://www.cpan.org/modules/by-module/Net/CHRISN/Net-SSLeay-1.94.tar.gz
131- tar -xzf Net-SSLeay-1.94.tar.gz
132- cd Net-SSLeay-1.94
133- perl Makefile.PL
134- make
135- sudo make install
166+ - name : Setup Perl environment
167+ uses : shogo82148/actions-setup-perl@v1
168+ with :
169+ perl-version : ' 5.38.2'
136170
137171 # SSL version 2.091 changes '' return to undef causing test case to fail.
138172 # Locking in the test version to use as 2.090
139- - name : Download and install IO::Socket::SSL 2.090 manually
173+ - name : Install dependencies
140174 run : |
141- curl -LO https://www.cpan.org/modules/by-module/IO/IO-Socket-SSL-2.090.tar.gz
142- tar -xzf IO-Socket-SSL-2.090.tar.gz
143- cd IO-Socket-SSL-2.090
144- perl Makefile.PL
145- make
146- sudo make install
175+ cpanm --notest Proc::Find Net::SSLeay@1.94 IO::Socket::SSL@2.090
147176
148177 - name : Checkout wolfssl-nginx
149178 uses : actions/checkout@v4
@@ -211,10 +240,6 @@ jobs:
211240 run : |
212241 echo "nginx_c_flags=-O0" >> $GITHUB_ENV
213242
214- - name : workaround high-entropy ASLR
215- # not needed after either an update to llvm or runner is done
216- run : sudo sysctl vm.mmap_rnd_bits=28
217-
218243 - name : Build nginx with sanitizer
219244 working-directory : nginx
220245 run : |
@@ -229,19 +254,16 @@ jobs:
229254 working-directory : nginx
230255 run : ldd objs/nginx | grep wolfssl
231256
232- - if : ${{ runner.debug }}
233- name : Run nginx-tests with sanitizer (debug)
257+ - name : Create LSAN suppression file
234258 working-directory : nginx-tests
235259 run : |
236- LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GITHUB_WORKSPACE/build-dir/lib \
237- TMPDIR=$GITHUB_WORKSPACE TEST_NGINX_VERBOSE=y TEST_NGINX_CATLOG=y \
238- TEST_NGINX_BINARY=../nginx/objs/nginx prove -v ${{ matrix.sanitize-ok }}
260+ echo "leak:ngx_worker_process_init" > lsan.supp
239261
240262 - if : ${{ !runner.debug }}
241263 name : Run nginx-tests with sanitizer
242264 working-directory : nginx-tests
243265 run : |
244266 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GITHUB_WORKSPACE/build-dir/lib \
267+ LSAN_OPTIONS=suppressions=$GITHUB_WORKSPACE/nginx-tests/lsan.supp \
245268 TMPDIR=$GITHUB_WORKSPACE TEST_NGINX_BINARY=../nginx/objs/nginx \
246269 prove ${{ matrix.sanitize-ok }}
247-
0 commit comments