[From nobody Thu Jun 25 05:54:38 2020
Received: from sonic303-3.consmr.mail.bf2.yahoo.com ([74.6.131.42])
 by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux))
 id 1fKlPT-0002sj-AO
 for openwrt-devel@lists.openwrt.org; Mon, 21 May 2018 14:03:37 +0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048;
 t=1526911402; bh=rnm8Broarx9gnOPSWX0I2jBVd3XVeosFqPrenATA9oM=;
 h=From:To:Cc:Subject:Date:In-Reply-To:References:From:Subject;
 b=T9Bzn/T+1bLjw+1Z3YFXHZA3w/4zsyrGL9y2ZbzC96rYH1IwWzYKWwbVcnOyp7KUlchZr1vzPRWTIFt9ZIoOHeoNZRPvKECUL4EH9e9v5kqDacDVWKiw50AvfbJZupiAEGXa1FkKNNDuczMmzVjwXXuDMZeRJ9GedNWNcAUdvtXUvbQYYPx06+9bdqKuDcr4L9mDMPyZC73TK8TSZGUIEODtM6AUVJXDxb0lrCEDG+l3RMpSaWcE3FH0xewKKkPXTT4WwZRXBqxIJWUYGb6JoWG489ll4bDBqpXfS0A81t2JitinZq1eWeNCYfseC0rpSYcvq5T0qA3pY9MTI+vmsg==
X-YMail-OSG: Ox3lxEsVM1m08d_3KXS_epzRkFnyiU30.9Z8nzso_Uuv3ApBSBDAglKYyqcOJp_
 LznB2hQw8hgUd1bpqL7ju8mfMheC5csJyUVNwdG1yeebjbl8MIS3_4qm1qGvVKee853DlIuYgugF
 XxImruUNBEfXw9E5if.ZoYgdAb1.2.utNPqAdQFs3JjAQ2KsJjqSeZAHnQ0ieFCLk4y6rrNZNGfV
 Pnvlr8w2LL42pJ9NPUbk4Cm_bFeJHfHOi9GtyQanMSBeOiapvwPrC5nBrG_BIbNbuX2k1LGxAFY9
 KH0yg_JRIjxS7KJoamzyySDNgUI3phVJVmgtK6DbA6tH3B4jsTlueqfW4qOS_yoGJZCkP8L_dQnN
 CitcCxYvyQijnemJUzT4R7MudLmQpZl43knhfiIS._KbpsKZFhDsgHYdaZwRX0BNTkwp5teg6_4s
 Rr8D7pjmDzxeibdxjB7z.UwdWOliTWN5CE.Dr11R5oJNfzMTrOVPdzGgCfrsE5W1e9MZm5hCTnKg
 yumqCIL9zkfb26IORtXeyoj4S.AtiDyffWvhdJAtwckt2E6NRX.LKdmkWAd4B4BCnk5uArLyCJ7y
 IWsxLwxMZp.NsVnonKgfMSg9QSi09Lkco6kb7CGiGVl3tu.y5sN1ePkHoA3BIMitoSdEyX7krQA1
 froDyS5YOmoIvzsinLgHbBQ--
Received: from sonic.gate.mail.ne1.yahoo.com by
 sonic303.consmr.mail.bf2.yahoo.com with HTTP; Mon, 21 May 2018 14:03:22 +0000
Received: from 18.175.75.177.infopasa.com.br (EHLO gateway.troianet.com.br)
 ([177.75.175.18])
 by smtp409.mail.bf1.yahoo.com (Oath Hermes SMTP Server) with ESMTPA ID
 7b6687c7115ab8fa8e1ea35f366d7fb2; 
 Mon, 21 May 2018 14:03:19 +0000 (UTC)
From: Eneas U de Queiroz &lt;cote2004-github@yahoo.com&gt;
To: openwrt-devel@lists.openwrt.org
Cc: Eneas U de Queiroz &lt;cote2004-github@yahoo.com&gt;
Subject: [PATCH] libevent2: Make it build using OpenSSL 1.1.0
Date: Mon, 21 May 2018 11:03:13 -0300
Message-Id: &lt;20180521140313.5924-1-cote2004-github@yahoo.com&gt;
X-Mailer: git-send-email 2.16.1
In-Reply-To: &lt;20180519004158.5669-1-cote2004-github@yahoo.com&gt;
References: &lt;20180519004158.5669-1-cote2004-github@yahoo.com&gt;
X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 
X-CRM114-CacheID: sfid-20180521_070335_455176_296251D9 
X-CRM114-Status: GOOD (  14.34  )
X-Spam-Score: -0.1 (/)
X-Spam-Report: SpamAssassin version 3.4.1 on bombadil.infradead.org summary:
 Content analysis details:   (-0.1 points)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -0.0 RCVD_IN_DNSWL_NONE     RBL: Sender listed at http://www.dnswl.org/, no
 trust [74.6.131.42 listed in list.dnswl.org]
 -0.0 SPF_PASS               SPF: sender matches SPF record
 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider
 (cote2004-github[at]yahoo.com)
 0.1 DKIM_SIGNED            Message has a DKIM or DK signature,
 not necessarily valid
 -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature
 -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's
 domain

This is a backport of @kroeckx patch that was merged in
libevent release-2.1.7-rc.

Signed-off-by: Eneas U de Queiroz &lt;cote2004-github@yahoo.com&gt;
---
 .../0001-Make-it-build-using-OpenSSL-1.1.0.patch   | 202 +++++++++++++++++++++
 1 file changed, 202 insertions(+)
 create mode 100644 package/libs/libevent2/patches/0001-Make-it-build-using-OpenSSL-1.1.0.patch

diff --git a/package/libs/libevent2/patches/0001-Make-it-build-using-OpenSSL-1.1.0.patch b/package/libs/libevent2/patches/0001-Make-it-build-using-OpenSSL-1.1.0.patch
new file mode 100644
index 0000000000..fb9ad06eb6
--- /dev/null
+++ b/package/libs/libevent2/patches/0001-Make-it-build-using-OpenSSL-1.1.0.patch
@@ -0,0 +1,202 @@
+From 9982da6a9ed9156172bb09e18c54cd94e5ceb9a4 Mon Sep 17 00:00:00 2001
+From: Eneas U de Queiroz &lt;cote2004-github@yahoo.com&gt;
+Date: Mon, 21 May 2018 10:23:52 -0300
+Subject: [PATCH] Make it build using OpenSSL 1.1.0
+
+This is a backport of @kroeckx patch that was merged in
+release-2.1.7-rc:
+
+    Rebased (azat):
+    - tabs instead of whitespaces
+    - make openssl-compat.h safe for complex expressions
+    - do not call sk_SSL_COMP_free() in 1.1 (fixes double free)
+
+Signed-off-by: Eneas U de Queiroz &lt;cote2004-github@yahoo.com&gt;
+---
+ bufferevent_openssl.c | 62 +++++++++++++++++++++++++--------------------------
+ openssl-compat.h      | 33 +++++++++++++++++++++++++++
+ 2 files changed, 63 insertions(+), 32 deletions(-)
+ create mode 100644 openssl-compat.h
+
+diff --git a/bufferevent_openssl.c b/bufferevent_openssl.c
+index 7582d9b4..5b177f0b 100644
+--- a/bufferevent_openssl.c
++++ b/bufferevent_openssl.c
+@@ -60,6 +60,7 @@
+ #include &lt;openssl/bio.h&gt;
+ #include &lt;openssl/ssl.h&gt;
+ #include &lt;openssl/err.h&gt;
++#include &quot;openssl-compat.h&quot;
+ 
+ /*
+  * Define an OpenSSL bio that targets a bufferevent.
+@@ -103,10 +104,8 @@ print_err(int val)
+ static int
+ bio_bufferevent_new(BIO *b)
+ {
+-	b-&gt;init = 0;
+-	b-&gt;num = -1;
+-	b-&gt;ptr = NULL; /* We'll be putting the bufferevent in this field.*/
+-	b-&gt;flags = 0;
++	BIO_set_init(b, 0);
++	BIO_set_data(b, NULL); /* We'll be putting the bufferevent in this field.*/
+ 	return 1;
+ }
+ 
+@@ -116,12 +115,10 @@ bio_bufferevent_free(BIO *b)
+ {
+ 	if (!b)
+ 		return 0;
+-	if (b-&gt;shutdown) {
+-		if (b-&gt;init &amp;&amp; b-&gt;ptr)
+-			bufferevent_free(b-&gt;ptr);
+-		b-&gt;init = 0;
+-		b-&gt;flags = 0;
+-		b-&gt;ptr = NULL;
++	if (BIO_get_shutdown(b)) {
++		if (BIO_get_init(b) &amp;&amp; BIO_get_data(b))
++			bufferevent_free(BIO_get_data(b));
++		BIO_free(b);
+ 	}
+ 	return 1;
+ }
+@@ -137,10 +134,10 @@ bio_bufferevent_read(BIO *b, char *out, int outlen)
+ 
+ 	if (!out)
+ 		return 0;
+-	if (!b-&gt;ptr)
++	if (!BIO_get_data(b))
+ 		return -1;
+ 
+-	input = bufferevent_get_input(b-&gt;ptr);
++	input = bufferevent_get_input(BIO_get_data(b));
+ 	if (evbuffer_get_length(input) == 0) {
+ 		/* If there's no data to read, say so. */
+ 		BIO_set_retry_read(b);
+@@ -156,13 +153,13 @@ bio_bufferevent_read(BIO *b, char *out, int outlen)
+ static int
+ bio_bufferevent_write(BIO *b, const char *in, int inlen)
+ {
+-	struct bufferevent *bufev = b-&gt;ptr;
++	struct bufferevent *bufev = BIO_get_data(b);
+ 	struct evbuffer *output;
+ 	size_t outlen;
+ 
+ 	BIO_clear_retry_flags(b);
+ 
+-	if (!b-&gt;ptr)
++	if (!BIO_get_data(b))
+ 		return -1;
+ 
+ 	output = bufferevent_get_output(bufev);
+@@ -188,15 +185,15 @@ bio_bufferevent_write(BIO *b, const char *in, int inlen)
+ static long
+ bio_bufferevent_ctrl(BIO *b, int cmd, long num, void *ptr)
+ {
+-	struct bufferevent *bufev = b-&gt;ptr;
++	struct bufferevent *bufev = BIO_get_data(b);
+ 	long ret = 1;
+ 
+ 	switch (cmd) {
+ 	case BIO_CTRL_GET_CLOSE:
+-		ret = b-&gt;shutdown;
++		ret = BIO_get_shutdown(b);
+ 		break;
+ 	case BIO_CTRL_SET_CLOSE:
+-		b-&gt;shutdown = (int)num;
++		BIO_set_shutdown(b, (int)num);
+ 		break;
+ 	case BIO_CTRL_PENDING:
+ 		ret = evbuffer_get_length(bufferevent_get_input(bufev)) != 0;
+@@ -225,23 +222,24 @@ bio_bufferevent_puts(BIO *b, const char *s)
+ }
+ 
+ /* Method table for the bufferevent BIO */
+-static BIO_METHOD methods_bufferevent = {
+-	BIO_TYPE_LIBEVENT, &quot;bufferevent&quot;,
+-	bio_bufferevent_write,
+-	bio_bufferevent_read,
+-	bio_bufferevent_puts,
+-	NULL /* bio_bufferevent_gets */,
+-	bio_bufferevent_ctrl,
+-	bio_bufferevent_new,
+-	bio_bufferevent_free,
+-	NULL /* callback_ctrl */,
+-};
++static BIO_METHOD *methods_bufferevent;
+ 
+ /* Return the method table for the bufferevents BIO */
+ static BIO_METHOD *
+ BIO_s_bufferevent(void)
+ {
+-	return &amp;methods_bufferevent;
++	if (methods_bufferevent == NULL) {
++		methods_bufferevent = BIO_meth_new(BIO_TYPE_LIBEVENT, &quot;bufferevent&quot;);
++		if (methods_bufferevent == NULL)
++			return NULL;
++		BIO_meth_set_write(methods_bufferevent, bio_bufferevent_write);
++		BIO_meth_set_read(methods_bufferevent, bio_bufferevent_read);
++		BIO_meth_set_puts(methods_bufferevent, bio_bufferevent_puts);
++		BIO_meth_set_ctrl(methods_bufferevent, bio_bufferevent_ctrl);
++		BIO_meth_set_create(methods_bufferevent, bio_bufferevent_new);
++		BIO_meth_set_destroy(methods_bufferevent, bio_bufferevent_free);
++	}
++	return methods_bufferevent;
+ }
+ 
+ /* Create a new BIO to wrap communication around a bufferevent.  If close_flag
+@@ -254,9 +252,9 @@ BIO_new_bufferevent(struct bufferevent *bufferevent, int close_flag)
+ 		return NULL;
+ 	if (!(result = BIO_new(BIO_s_bufferevent())))
+ 		return NULL;
+-	result-&gt;init = 1;
+-	result-&gt;ptr = bufferevent;
+-	result-&gt;shutdown = close_flag ? 1 : 0;
++	BIO_set_init(result, 1);
++	BIO_set_data(result, bufferevent);
++	BIO_set_shutdown(result, close_flag ? 1 : 0);
+ 	return result;
+ }
+ 
+diff --git a/openssl-compat.h b/openssl-compat.h
+new file mode 100644
+index 00000000..628f5661
+--- /dev/null
++++ b/openssl-compat.h
+@@ -0,0 +1,33 @@
++#ifndef OPENSSL_COMPAT_H
++#define OPENSSL_COMPAT_H
++
++#if OPENSSL_VERSION_NUMBER &lt; 0x10100000L
++
++static BIO_METHOD *BIO_meth_new(int type, const char *name)
++{
++	BIO_METHOD *biom = calloc(1, sizeof(BIO_METHOD));
++
++	if (biom != NULL) {
++		biom-&gt;type = type;
++		biom-&gt;name = name;
++	}
++	return biom;
++}
++
++#define BIO_meth_set_write(b, f) (b)-&gt;bwrite = (f)
++#define BIO_meth_set_read(b, f) (b)-&gt;bread = (f)
++#define BIO_meth_set_puts(b, f) (b)-&gt;bputs = (f)
++#define BIO_meth_set_ctrl(b, f) (b)-&gt;ctrl = (f)
++#define BIO_meth_set_create(b, f) (b)-&gt;create = (f)
++#define BIO_meth_set_destroy(b, f) (b)-&gt;destroy = (f)
++
++#define BIO_set_init(b, val) (b)-&gt;init = (val)
++#define BIO_set_data(b, val) (b)-&gt;ptr = (val)
++#define BIO_set_shutdown(b, val) (b)-&gt;shutdown = (val)
++#define BIO_get_init(b) (b)-&gt;init
++#define BIO_get_data(b) (b)-&gt;ptr
++#define BIO_get_shutdown(b) (b)-&gt;shutdown
++
++#endif /* OPENSSL_VERSION_NUMBER &lt; 0x10100000L */
++
++#endif /* OPENSSL_COMPAT_H */
+-- 
+2.16.1
+
-- 
2.16.1


]