view auto/lib/perl/make @ 7367:bf1ac3dc1e68

SSL: fixed segfault on renegotiation (ticket #1646). In e3ba4026c02d (1.15.4) nginx own renegotiation checks were disabled if SSL_OP_NO_RENEGOTIATION is available. But since SSL_OP_NO_RENEGOTIATION is only set on a connection, not in an SSL context, SSL_clear_option() removed it as long as a matching virtual server was found. This resulted in a segmentation fault similar to the one fixed in a6902a941279 (1.9.8), affecting nginx built with OpenSSL 1.1.0h or higher. To fix this, SSL_OP_NO_RENEGOTIATION is now explicitly set in ngx_http_ssl_servername() after adjusting options. Additionally, instead of c->ssl->renegotiation we now check c->ssl->handshaked, which seems to be a more correct flag to test, and will prevent the segmentation fault from happening even if SSL_OP_NO_RENEGOTIATION is not working.
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 02 Oct 2018 17:46:18 +0300
parents 53ea5694d1cc
children
line wrap: on
line source


# Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.


cat << END                                                    >> $NGX_MAKEFILE

$NGX_OBJS/src/http/modules/perl/ngx_http_perl_module.o: \\
		$NGX_OBJS/$ngx_perl_module

$NGX_OBJS/$ngx_perl_module: \\
		\$(CORE_DEPS) \$(HTTP_DEPS) \\
		src/http/modules/perl/ngx_http_perl_module.h \\
		$NGX_OBJS/src/http/modules/perl/Makefile
	cd $NGX_OBJS/src/http/modules/perl && \$(MAKE)

	rm -rf $NGX_OBJS/install_perl


$NGX_OBJS/src/http/modules/perl/Makefile: \\
		$NGX_AUTO_CONFIG_H \\
		src/core/nginx.h \\
		src/http/modules/perl/Makefile.PL \\
		src/http/modules/perl/nginx.pm \\
		src/http/modules/perl/nginx.xs \\
		src/http/modules/perl/typemap
	grep 'define NGINX_VERSION' src/core/nginx.h \\
		| sed -e 's/^.*"\(.*\)".*/\1/' > \\
		$NGX_OBJS/src/http/modules/perl/version
	sed "s/%%VERSION%%/\`cat $NGX_OBJS/src/http/modules/perl/version\`/" \\
		src/http/modules/perl/nginx.pm > \\
		$NGX_OBJS/src/http/modules/perl/nginx.pm
	cp -p src/http/modules/perl/nginx.xs $NGX_OBJS/src/http/modules/perl/
	cp -p src/http/modules/perl/typemap $NGX_OBJS/src/http/modules/perl/
	cp -p src/http/modules/perl/Makefile.PL $NGX_OBJS/src/http/modules/perl/

	cd $NGX_OBJS/src/http/modules/perl \\
		&& NGX_PM_CFLAGS="\$(NGX_PM_CFLAGS) -g $NGX_CC_OPT" \\
			NGX_PM_LDFLAGS="$NGX_LD_OPT \$(NGX_PM_LDFLAGS)" \\
			NGX_INCS="$CORE_INCS $NGX_OBJS $HTTP_INCS" \\
			NGX_DEPS="\$(CORE_DEPS) \$(HTTP_DEPS)" \\
		$NGX_PERL Makefile.PL \\
			LIB=$NGX_PERL_MODULES \\
			INSTALLSITEMAN3DIR=$NGX_PERL_MODULES_MAN

END