I think that arc4random diff is not enough, there are more places where this is used aren't there?
On (2014-11-06 12:19), Stuart Henderson wrote: > Add a configure check for SSL_get0_alpn_selected() and use it instead > of TLSEXT_TYPE_application_layer_protocol_negotiation (which was added > to openssl at the same time as ALPN support, but arrived in libressl > before ALPN support). > > While there, use upstream's -Wfoo CFLAGS (CFLAGS are passed in by ports > so we miss their usual checks), and add a bonus arc4random conversion > (main use is in their dns resolver, I think). > > Unbreaks the port. > > OK? > > > Index: Makefile > =================================================================== > RCS file: /cvs/ports/www/nginx/Makefile,v > retrieving revision 1.66 > diff -u -p -r1.66 Makefile > --- Makefile 31 Oct 2014 14:40:59 -0000 1.66 > +++ Makefile 6 Nov 2014 12:10:03 -0000 > @@ -3,6 +3,7 @@ > COMMENT= robust and small HTTP server and mail proxy server > > VERSION= 1.7.7 > +REVISION= 0 > DISTNAME= nginx-${VERSION} > CATEGORIES= www > > @@ -25,6 +26,7 @@ LIB_DEPENDS+= devel/pcre > > NGINX_DIR= /var/www > SUBST_VARS= NGINX_DIR > +CFLAGS+= -Wall -Wpointer-arith -Werror > > FLAVORS= lua naxsi passenger > FLAVOR?= > Index: patches/patch-auto_lib_openssl_conf > =================================================================== > RCS file: patches/patch-auto_lib_openssl_conf > diff -N patches/patch-auto_lib_openssl_conf > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-auto_lib_openssl_conf 6 Nov 2014 12:10:03 -0000 > @@ -0,0 +1,20 @@ > +$OpenBSD$ > +--- auto/lib/openssl/conf.orig Thu Nov 6 11:59:59 2014 > ++++ auto/lib/openssl/conf Thu Nov 6 12:00:02 2014 > +@@ -59,6 +59,16 @@ else > + have=NGX_SSL . auto/have > + CORE_LIBS="$CORE_LIBS $ngx_feature_libs $NGX_LIBDL" > + OPENSSL=YES > ++ > ++ ngx_feature="SSL_get0_alpn_selected()" > ++ ngx_feature_name="NGX_HAVE_ALPN" > ++ ngx_feature_run=no > ++ ngx_feature_incs="#include <openssl/ssl.h>" > ++ ngx_feature_path= > ++ ngx_feature_libs="-lssl -lcrypto" > ++ ngx_feature_test="SSL_get0_alpn_selected(NULL, NULL, NULL);" > ++ . auto/feature > ++ > + fi > + fi > + > Index: patches/patch-src_core_ngx_config_h > =================================================================== > RCS file: patches/patch-src_core_ngx_config_h > diff -N patches/patch-src_core_ngx_config_h > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-src_core_ngx_config_h 6 Nov 2014 12:10:03 -0000 > @@ -0,0 +1,12 @@ > +$OpenBSD$ > +--- src/core/ngx_config.h.orig Thu Nov 6 11:42:58 2014 > ++++ src/core/ngx_config.h Thu Nov 6 11:45:38 2014 > +@@ -54,7 +54,7 @@ > + #define ngx_signal_helper(n) SIG##n > + #define ngx_signal_value(n) ngx_signal_helper(n) > + > +-#define ngx_random random > ++#define ngx_random arc4random > + > + /* TODO: #ifndef */ > + #define NGX_SHUTDOWN_SIGNAL QUIT > Index: patches/patch-src_http_modules_ngx_http_ssl_module_c > =================================================================== > RCS file: patches/patch-src_http_modules_ngx_http_ssl_module_c > diff -N patches/patch-src_http_modules_ngx_http_ssl_module_c > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-src_http_modules_ngx_http_ssl_module_c 6 Nov 2014 > 12:10:03 -0000 > @@ -0,0 +1,30 @@ > +$OpenBSD$ > +--- src/http/modules/ngx_http_ssl_module.c.orig Thu Nov 6 12:06:47 2014 > ++++ src/http/modules/ngx_http_ssl_module.c Thu Nov 6 12:08:20 2014 > +@@ -20,7 +20,7 @@ typedef ngx_int_t (*ngx_ssl_variable_handler_pt)(ngx_c > + #define NGX_HTTP_NPN_ADVERTISE "\x08http/1.1" > + > + > +-#ifdef TLSEXT_TYPE_application_layer_protocol_negotiation > ++#ifdef NGX_HAVE_ALPN > + static int ngx_http_ssl_alpn_select(ngx_ssl_conn_t *ssl_conn, > + const unsigned char **out, unsigned char *outlen, > + const unsigned char *in, unsigned int inlen, void *arg); > +@@ -314,7 +314,7 @@ static ngx_http_variable_t ngx_http_ssl_vars[] = { > + static ngx_str_t ngx_http_ssl_sess_id_ctx = ngx_string("HTTP"); > + > + > +-#ifdef TLSEXT_TYPE_application_layer_protocol_negotiation > ++#ifdef NGX_HAVE_ALPN > + > + static int > + ngx_http_ssl_alpn_select(ngx_ssl_conn_t *ssl_conn, const unsigned char > **out, > +@@ -646,7 +646,7 @@ ngx_http_ssl_merge_srv_conf(ngx_conf_t *cf, void *pare > + > + #endif > + > +-#ifdef TLSEXT_TYPE_application_layer_protocol_negotiation > ++#ifdef NGX_HAVE_ALPN > + SSL_CTX_set_alpn_select_cb(conf->ssl.ctx, ngx_http_ssl_alpn_select, > NULL); > + #endif > + > Index: patches/patch-src_http_ngx_http_request_c > =================================================================== > RCS file: patches/patch-src_http_ngx_http_request_c > diff -N patches/patch-src_http_ngx_http_request_c > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-src_http_ngx_http_request_c 6 Nov 2014 12:10:03 -0000 > @@ -0,0 +1,12 @@ > +$OpenBSD$ > +--- src/http/ngx_http_request.c.orig Thu Nov 6 12:05:45 2014 > ++++ src/http/ngx_http_request.c Thu Nov 6 12:06:04 2014 > +@@ -771,7 +771,7 @@ ngx_http_ssl_handshake_handler(ngx_connection_t *c) > + const unsigned char *data; > + static const ngx_str_t spdy = ngx_string(NGX_SPDY_NPN_NEGOTIATED); > + > +-#ifdef TLSEXT_TYPE_application_layer_protocol_negotiation > ++#ifdef NGINX_HAVE_ALPN > + SSL_get0_alpn_selected(c->ssl->connection, &data, &len); > + > + #ifdef TLSEXT_TYPE_next_proto_neg > Index: patches/patch-src_os_unix_ngx_posix_init_c > =================================================================== > RCS file: patches/patch-src_os_unix_ngx_posix_init_c > diff -N patches/patch-src_os_unix_ngx_posix_init_c > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-src_os_unix_ngx_posix_init_c 6 Nov 2014 12:10:03 > -0000 > @@ -0,0 +1,15 @@ > +$OpenBSD$ > + > +using arc4random (see ngx_config.h) so no need to seed. > + > +--- src/os/unix/ngx_posix_init.c.orig Thu Nov 6 11:48:48 2014 > ++++ src/os/unix/ngx_posix_init.c Thu Nov 6 11:49:04 2014 > +@@ -75,8 +75,6 @@ ngx_os_init(ngx_log_t *log) > + ngx_inherited_nonblocking = 0; > + #endif > + > +- srandom(ngx_time()); > +- > + return NGX_OK; > + } > + > Index: patches/patch-src_os_unix_ngx_process_cycle_c > =================================================================== > RCS file: patches/patch-src_os_unix_ngx_process_cycle_c > diff -N patches/patch-src_os_unix_ngx_process_cycle_c > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-src_os_unix_ngx_process_cycle_c 6 Nov 2014 12:10:03 > -0000 > @@ -0,0 +1,15 @@ > +$OpenBSD$ > + > +using arc4random (see ngx_config.h) so no need to seed. > + > +--- src/os/unix/ngx_process_cycle.c.orig Thu Nov 6 11:48:48 2014 > ++++ src/os/unix/ngx_process_cycle.c Thu Nov 6 11:49:12 2014 > +@@ -1015,8 +1015,6 @@ nochroot: > + "sigprocmask() failed"); > + } > + > +- srandom((ngx_pid << 16) ^ ngx_time()); > +- > + /* > + * disable deleting previous events for the listening sockets because > + * in the worker processes there are no events at all at this point >