Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 31 Aug 2020 07:14:32 +0000 (UTC)
From:      Alexey Dokuchaev <danfe@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r547154 - in head/www: xshttpd xshttpd-devel xshttpd-devel/files xshttpd/files
Message-ID:  <202008310714.07V7EWGm006983@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: danfe
Date: Mon Aug 31 07:14:31 2020
New Revision: 547154
URL: https://svnweb.freebsd.org/changeset/ports/547154

Log:
  Fix the build against modern versions of OpenSSL and compilers.

Added:
  head/www/xshttpd-devel/files/patch-src_extra.c   (contents, props changed)
  head/www/xshttpd-devel/files/patch-src_httpd.c   (contents, props changed)
  head/www/xshttpd-devel/files/patch-src_ssl.c   (contents, props changed)
  head/www/xshttpd/files/patch-src_httpd.c   (contents, props changed)
  head/www/xshttpd/files/patch-src_ssl.c   (contents, props changed)
Modified:
  head/www/xshttpd-devel/Makefile
  head/www/xshttpd/Makefile

Modified: head/www/xshttpd-devel/Makefile
==============================================================================
--- head/www/xshttpd-devel/Makefile	Mon Aug 31 07:12:12 2020	(r547153)
+++ head/www/xshttpd-devel/Makefile	Mon Aug 31 07:14:31 2020	(r547154)
@@ -43,17 +43,12 @@ PERL_CONFIGURE_WITH=	perl
 
 PORTDOCS=	README ChangeLog
 
-.include <bsd.port.pre.mk>
-
-.if ${SSL_DEFAULT} == base
-BROKEN_FreeBSD_12=	variable has incomplete type 'EVP_CIPHER_CTX' (aka 'struct evp_cipher_ctx_st')
-BROKEN_FreeBSD_13=	variable has incomplete type 'EVP_CIPHER_CTX' (aka 'struct evp_cipher_ctx_st')
-.endif
-
 post-patch:
 	@${REINPLACE_CMD} \
 		-e 's|\(MIME_TYPES\).*|\1 "${LOCALBASE}/etc/mime.types"|' \
 		${WRKSRC}/src/constants.h
+	@${REINPLACE_CMD} -e 's|^struct socket_config|extern &|' \
+		${WRKSRC}/src/htconfig.h
 	@${REINPLACE_CMD} -e 's|mime.types ||g' \
 		${WRKSRC}/config/Makefile.in
 	@${REINPLACE_CMD} -e '/libdir/ s|(INSTALL_DATA)|& -s|' \
@@ -67,4 +62,4 @@ post-install:
 		${STAGEDIR}/var/db/xshttpd/sessions
 	${INSTALL_DATA} ${PORTDOCS:S|^|${WRKSRC}/|} ${STAGEDIR}${DOCSDIR}
 
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>

Added: head/www/xshttpd-devel/files/patch-src_extra.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/xshttpd-devel/files/patch-src_extra.c	Mon Aug 31 07:14:31 2020	(r547154)
@@ -0,0 +1,34 @@
+--- src/extra.c.orig	2015-01-02 16:49:11 UTC
++++ src/extra.c
+@@ -586,7 +586,7 @@ do_crypt(const char * const skey, const char * const i
+ 	const unsigned int	IVLEN = 16;
+ 	int		outlen,
+ 			tmplen;
+-	EVP_CIPHER_CTX	ctx;
++	EVP_CIPHER_CTX	*ctx;
+ 	unsigned char	plain[16] = { 0 };
+ 	unsigned char	outbuf[1024];
+ 	char		*encrypted;
+@@ -600,17 +600,17 @@ do_crypt(const char * const skey, const char * const i
+ 	}
+ 
+ 	/* init aes-128-cbc */
+-	EVP_CIPHER_CTX_init(&ctx);
+-	EVP_EncryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL, key, outbuf /* iv */);
++	ctx = EVP_CIPHER_CTX_new();
++	EVP_EncryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, outbuf /* iv */);
+ 
+-	if (!EVP_EncryptUpdate(&ctx, outbuf + outlen, &tmplen,
++	if (!EVP_EncryptUpdate(ctx, outbuf + outlen, &tmplen,
+ 				plain, sizeof(plain)))
+ 		return false;
+ 	outlen += tmplen;
+-	if (!EVP_EncryptFinal_ex(&ctx, outbuf + outlen, &tmplen))
++	if (!EVP_EncryptFinal_ex(ctx, outbuf + outlen, &tmplen))
+ 		return false;
+ 	outlen += tmplen;
+-	EVP_CIPHER_CTX_cleanup(&ctx);
++	EVP_CIPHER_CTX_free(ctx);
+ 
+ 	MALLOC(encrypted, char, outlen);
+ 	memcpy(encrypted, outbuf, outlen);

Added: head/www/xshttpd-devel/files/patch-src_httpd.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/xshttpd-devel/files/patch-src_httpd.c	Mon Aug 31 07:14:31 2020	(r547154)
@@ -0,0 +1,10 @@
+--- src/httpd.c.orig	2015-09-05 20:44:28 UTC
++++ src/httpd.c
+@@ -84,6 +84,7 @@ static	char	referer[MYBUFSIZ], orig[MYBUFSIZ];
+ static	char	*startparams, *message503;
+ struct	session		session;
+ struct	env		env;
++struct	socket_config	*cursock;
+ 
+ /* Prototypes */
+ 

Added: head/www/xshttpd-devel/files/patch-src_ssl.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/xshttpd-devel/files/patch-src_ssl.c	Mon Aug 31 07:14:31 2020	(r547154)
@@ -0,0 +1,32 @@
+--- src/ssl.c.orig	2015-09-05 20:50:21 UTC
++++ src/ssl.c
+@@ -538,7 +538,11 @@ sslverify_callback(int preverify_ok, X509_STORE_CTX *x
+ 	X509_NAME	*xsname;
+ 	char		*strname;
+ 	int		rc, ovector[OVSIZE];
++# if OPENSSL_VERSION_NUMBER < 0x10100005L
+ 	X509		*xs = x509_ctx->cert;
++# else
++	X509		*xs = X509_STORE_CTX_get0_cert(x509_ctx);
++# endif
+ 
+ 	/* match subject */
+ 	if (cursock->sslpcresdn)
+@@ -937,11 +941,12 @@ loadssl(struct socket_config * const lsock, struct ssl
+ 			unsigned char	sign[EVP_PKEY_size(evpkey)];
+ 			unsigned int	siglen = 0;
+ 
+-			EVP_MD_CTX mdctx;
+-			EVP_MD_CTX_init(&mdctx);
+-			EVP_SignInit(&mdctx, EVP_sha384());
+-			EVP_SignUpdate(&mdctx, ticketkey, strlen(ticketkey));
+-			EVP_SignFinal(&mdctx, sign, &siglen, evpkey);
++			EVP_MD_CTX *mdctx;
++			mdctx = EVP_MD_CTX_create();
++			EVP_SignInit(mdctx, EVP_sha384());
++			EVP_SignUpdate(mdctx, ticketkey, strlen(ticketkey));
++			EVP_SignFinal(mdctx, sign, &siglen, evpkey);
++			EVP_MD_CTX_destroy(mdctx);
+ 
+ 			/* The first 48 bytes are used:
+ 			 * - 16 bytes ticket key name

Modified: head/www/xshttpd/Makefile
==============================================================================
--- head/www/xshttpd/Makefile	Mon Aug 31 07:12:12 2020	(r547153)
+++ head/www/xshttpd/Makefile	Mon Aug 31 07:14:31 2020	(r547154)
@@ -42,13 +42,6 @@ CURL_CONFIGURE_WITH=	curl
 
 PORTDOCS=	README ChangeLog
 
-.include <bsd.port.pre.mk>
-
-.if ${SSL_DEFAULT} == base
-BROKEN_FreeBSD_12=	incomplete definition of type 'struct x509_store_ctx_st'
-BROKEN_FreeBSD_13=	incomplete definition of type 'struct x509_store_ctx_st'
-.endif
-
 post-patch:
 .for i in man/httpd.1.in man/httpd.conf.5 config/httpd.conf.sample \
 	contrib/SSL-Makefile contrib/logrotate.sh
@@ -62,6 +55,8 @@ post-patch:
 	@${REINPLACE_CMD} \
 		-e 's|\(MIME_TYPES\).*|\1 "${LOCALBASE}/etc/mime.types"|' \
 		${WRKSRC}/src/constants.h
+	@${REINPLACE_CMD} -e 's|^struct socket_config|extern &|' \
+		${WRKSRC}/src/htconfig.h
 	@${REINPLACE_CMD} -e 's|mime.types ||g' \
 		${WRKSRC}/config/Makefile.in
 
@@ -69,4 +64,4 @@ post-install:
 	@${MKDIR} ${STAGEDIR}${DOCSDIR} ${STAGEDIR}${WWWDIR}/htdocs
 	${INSTALL_DATA} ${PORTDOCS:S|^|${WRKSRC}/|} ${STAGEDIR}${DOCSDIR}
 
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>

Added: head/www/xshttpd/files/patch-src_httpd.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/xshttpd/files/patch-src_httpd.c	Mon Aug 31 07:14:31 2020	(r547154)
@@ -0,0 +1,11 @@
+--- src/httpd.c.orig	2009-01-10 22:52:29 UTC
++++ src/httpd.c
+@@ -90,6 +90,8 @@ static	char	referer[MYBUFSIZ], orig[MYBUFSIZ];
+ static	char	*startparams, *message503;
+ struct	session		session;
+ struct	env		env;
++struct	socket_config	*cursock;
++
+ #define CLEANENV do { \
+ 	memset(&env, 0, sizeof(struct env));\
+ 	MALLOC(environ, char *, 1);\

Added: head/www/xshttpd/files/patch-src_ssl.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/xshttpd/files/patch-src_ssl.c	Mon Aug 31 07:14:31 2020	(r547154)
@@ -0,0 +1,14 @@
+--- src/ssl.c.orig	2009-01-10 22:52:29 UTC
++++ src/ssl.c
+@@ -244,7 +244,11 @@ sslverify_callback(int preverify_ok, X509_STORE_CTX *x
+ 	X509_NAME	*xsname;
+ 	char		*strname;
+ 	int		rc, ovector[OVSIZE];
++# if OPENSSL_VERSION_NUMBER < 0x10100005L
+ 	X509		*xs = x509_ctx->cert;
++# else
++	X509		*xs = X509_STORE_CTX_get0_cert(x509_ctx);
++# endif
+ 
+ 	/* match subject */
+ 	if (cursock->sslpcresdn)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202008310714.07V7EWGm006983>