1 |
commit: 58f23370c5f39898121cd8bbb05638cd288eba37 |
2 |
Author: Pacho Ramos <pacho <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sun Feb 24 09:33:30 2019 +0000 |
4 |
Commit: Pacho Ramos <pacho <AT> gentoo <DOT> org> |
5 |
CommitDate: Sun Feb 24 10:52:58 2019 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=58f23370 |
7 |
|
8 |
net-misc/tn5250: Fix openssl-1.1 compat |
9 |
|
10 |
Closes: https://bugs.gentoo.org/676654 |
11 |
Package-Manager: Portage-2.3.62, Repoman-2.3.12 |
12 |
Signed-off-by: Pacho Ramos <pacho <AT> gentoo.org> |
13 |
|
14 |
.../files/tn5250-0.17.4-duplicate-definition.patch | 115 ++++++++++++++ |
15 |
net-misc/tn5250/files/tn5250-0.17.4-fedora.patch | 167 +++++++++++++++++++++ |
16 |
.../tn5250/files/tn5250-0.17.4-openssl11.patch | 49 ++++++ |
17 |
net-misc/tn5250/tn5250-0.17.4-r3.ebuild | 58 +++++++ |
18 |
4 files changed, 389 insertions(+) |
19 |
|
20 |
diff --git a/net-misc/tn5250/files/tn5250-0.17.4-duplicate-definition.patch b/net-misc/tn5250/files/tn5250-0.17.4-duplicate-definition.patch |
21 |
new file mode 100644 |
22 |
index 00000000000..39b3ccb4555 |
23 |
--- /dev/null |
24 |
+++ b/net-misc/tn5250/files/tn5250-0.17.4-duplicate-definition.patch |
25 |
@@ -0,0 +1,115 @@ |
26 |
+From 66e1a2f80091e9ee9b99156ae23e5faaf9f24fe0 Mon Sep 17 00:00:00 2001 |
27 |
+From: =?UTF-8?q?Dan=20Hor=C3=A1k?= <dan@×××××.cz> |
28 |
+Date: Mon, 20 Feb 2017 15:06:36 +0100 |
29 |
+Subject: [PATCH 3/4] remove duplicate definition for tn3270_ssl_stream_init() |
30 |
+ |
31 |
+--- |
32 |
+ lib5250/sslstream.c | 93 ----------------------------------------------------- |
33 |
+ 1 file changed, 93 deletions(-) |
34 |
+ |
35 |
+diff --git a/lib5250/sslstream.c b/lib5250/sslstream.c |
36 |
+index f4353a9..86d38cf 100644 |
37 |
+--- a/lib5250/sslstream.c |
38 |
++++ b/lib5250/sslstream.c |
39 |
+@@ -477,99 +477,6 @@ int tn5250_ssl_stream_init (Tn5250Stream *This) |
40 |
+ return 0; /* Ok */ |
41 |
+ } |
42 |
+ |
43 |
+-/****f* lib5250/tn3270_ssl_stream_init |
44 |
+- * NAME |
45 |
+- * tn3270_ssl_stream_init |
46 |
+- * SYNOPSIS |
47 |
+- * ret = tn3270_ssl_stream_init (This); |
48 |
+- * INPUTS |
49 |
+- * Tn5250Stream * This - |
50 |
+- * DESCRIPTION |
51 |
+- * DOCUMENT ME!!! |
52 |
+- *****/ |
53 |
+-int tn3270_ssl_stream_init (Tn5250Stream *This) |
54 |
+-{ |
55 |
+- int len; |
56 |
+- |
57 |
+-/* initialize SSL library */ |
58 |
+- |
59 |
+- SSL_load_error_strings(); |
60 |
+- SSL_library_init(); |
61 |
+- |
62 |
+-/* create a new SSL context */ |
63 |
+- |
64 |
+- This->ssl_context = SSL_CTX_new(SSLv23_client_method()); |
65 |
+- if (This->ssl_context==NULL) { |
66 |
+- DUMP_ERR_STACK (); |
67 |
+- return -1; |
68 |
+- } |
69 |
+- |
70 |
+-/* if a certificate authority file is defined, load it into this context */ |
71 |
+- |
72 |
+- if (This->config!=NULL && tn5250_config_get (This->config, "ssl_ca_file")) { |
73 |
+- if (SSL_CTX_load_verify_locations(This->ssl_context, |
74 |
+- tn5250_config_get (This->config, "ssl_ca_file"), NULL)<1) { |
75 |
+- DUMP_ERR_STACK (); |
76 |
+- return -1; |
77 |
+- } |
78 |
+- } |
79 |
+- |
80 |
+-/* if a certificate authority file is defined, load it into this context */ |
81 |
+- |
82 |
+- if (This->config!=NULL && tn5250_config_get (This->config, "ssl_ca_file")) { |
83 |
+- if (SSL_CTX_load_verify_locations(This->ssl_context, |
84 |
+- tn5250_config_get (This->config, "ssl_ca_file"), NULL)<1) { |
85 |
+- DUMP_ERR_STACK (); |
86 |
+- return -1; |
87 |
+- } |
88 |
+- } |
89 |
+- |
90 |
+- This->userdata = NULL; |
91 |
+- |
92 |
+-/* if a PEM passphrase is defined, set things up so that it can be used */ |
93 |
+- |
94 |
+- if (This->config!=NULL && tn5250_config_get (This->config,"ssl_pem_pass")){ |
95 |
+- TN5250_LOG(("SSL: Setting password callback\n")); |
96 |
+- len = strlen(tn5250_config_get (This->config, "ssl_pem_pass")); |
97 |
+- This->userdata = malloc(len+1); |
98 |
+- strncpy(This->userdata, |
99 |
+- tn5250_config_get (This->config, "ssl_pem_pass"), len); |
100 |
+- SSL_CTX_set_default_passwd_cb(This->ssl_context, |
101 |
+- (pem_password_cb *)ssl_stream_passwd_cb); |
102 |
+- SSL_CTX_set_default_passwd_cb_userdata(This->ssl_context, (void *)This); |
103 |
+- |
104 |
+- } |
105 |
+- |
106 |
+-/* If a certificate file has been defined, load it into this context as well */ |
107 |
+- |
108 |
+- if (This->config!=NULL && tn5250_config_get (This->config, "ssl_cert_file")){ |
109 |
+- TN5250_LOG(("SSL: Loading certificates from certificate file\n")); |
110 |
+- if (SSL_CTX_use_certificate_file(This->ssl_context, |
111 |
+- tn5250_config_get (This->config, "ssl_cert_file"), |
112 |
+- SSL_FILETYPE_PEM) <= 0) { |
113 |
+- DUMP_ERR_STACK (); |
114 |
+- return -1; |
115 |
+- } |
116 |
+- TN5250_LOG(("SSL: Loading private keys from certificate file\n")); |
117 |
+- if (SSL_CTX_use_PrivateKey_file(This->ssl_context, |
118 |
+- tn5250_config_get (This->config, "ssl_cert_file"), |
119 |
+- SSL_FILETYPE_PEM) <= 0) { |
120 |
+- DUMP_ERR_STACK (); |
121 |
+- return -1; |
122 |
+- } |
123 |
+- } |
124 |
+- |
125 |
+- This->ssl_handle = NULL; |
126 |
+- This->connect = ssl_stream_connect; |
127 |
+- This->accept = ssl_stream_accept; |
128 |
+- This->disconnect = ssl_stream_disconnect; |
129 |
+- This->handle_receive = ssl_stream_handle_receive; |
130 |
+- This->send_packet = tn3270_ssl_stream_send_packet; |
131 |
+- This->destroy = ssl_stream_destroy; |
132 |
+- This->streamtype = TN3270E_STREAM; |
133 |
+- return 0; /* Ok */ |
134 |
+-} |
135 |
+- |
136 |
+ /****i* lib5250/ssl_stream_connect |
137 |
+ * NAME |
138 |
+ * ssl_stream_connect |
139 |
+-- |
140 |
+2.7.4 |
141 |
|
142 |
diff --git a/net-misc/tn5250/files/tn5250-0.17.4-fedora.patch b/net-misc/tn5250/files/tn5250-0.17.4-fedora.patch |
143 |
new file mode 100644 |
144 |
index 00000000000..9c77bf08cc0 |
145 |
--- /dev/null |
146 |
+++ b/net-misc/tn5250/files/tn5250-0.17.4-fedora.patch |
147 |
@@ -0,0 +1,167 @@ |
148 |
+From 66e1a2f80091e9ee9b99156ae23e5faaf9f24fe0 Mon Sep 17 00:00:00 2001 |
149 |
+From: =?UTF-8?q?Dan=20Hor=C3=A1k?= <dan@×××××.cz> |
150 |
+Date: Mon, 20 Feb 2017 15:06:36 +0100 |
151 |
+Subject: [PATCH 3/4] remove duplicate definition for tn3270_ssl_stream_init() |
152 |
+ |
153 |
+--- |
154 |
+ lib5250/sslstream.c | 93 ----------------------------------------------------- |
155 |
+ 1 file changed, 93 deletions(-) |
156 |
+ |
157 |
+diff --git a/lib5250/sslstream.c b/lib5250/sslstream.c |
158 |
+index f4353a9..86d38cf 100644 |
159 |
+--- a/lib5250/sslstream.c |
160 |
++++ b/lib5250/sslstream.c |
161 |
+@@ -477,99 +477,6 @@ int tn5250_ssl_stream_init (Tn5250Stream *This) |
162 |
+ return 0; /* Ok */ |
163 |
+ } |
164 |
+ |
165 |
+-/****f* lib5250/tn3270_ssl_stream_init |
166 |
+- * NAME |
167 |
+- * tn3270_ssl_stream_init |
168 |
+- * SYNOPSIS |
169 |
+- * ret = tn3270_ssl_stream_init (This); |
170 |
+- * INPUTS |
171 |
+- * Tn5250Stream * This - |
172 |
+- * DESCRIPTION |
173 |
+- * DOCUMENT ME!!! |
174 |
+- *****/ |
175 |
+-int tn3270_ssl_stream_init (Tn5250Stream *This) |
176 |
+-{ |
177 |
+- int len; |
178 |
+- |
179 |
+-/* initialize SSL library */ |
180 |
+- |
181 |
+- SSL_load_error_strings(); |
182 |
+- SSL_library_init(); |
183 |
+- |
184 |
+-/* create a new SSL context */ |
185 |
+- |
186 |
+- This->ssl_context = SSL_CTX_new(SSLv23_client_method()); |
187 |
+- if (This->ssl_context==NULL) { |
188 |
+- DUMP_ERR_STACK (); |
189 |
+- return -1; |
190 |
+- } |
191 |
+- |
192 |
+-/* if a certificate authority file is defined, load it into this context */ |
193 |
+- |
194 |
+- if (This->config!=NULL && tn5250_config_get (This->config, "ssl_ca_file")) { |
195 |
+- if (SSL_CTX_load_verify_locations(This->ssl_context, |
196 |
+- tn5250_config_get (This->config, "ssl_ca_file"), NULL)<1) { |
197 |
+- DUMP_ERR_STACK (); |
198 |
+- return -1; |
199 |
+- } |
200 |
+- } |
201 |
+- |
202 |
+-/* if a certificate authority file is defined, load it into this context */ |
203 |
+- |
204 |
+- if (This->config!=NULL && tn5250_config_get (This->config, "ssl_ca_file")) { |
205 |
+- if (SSL_CTX_load_verify_locations(This->ssl_context, |
206 |
+- tn5250_config_get (This->config, "ssl_ca_file"), NULL)<1) { |
207 |
+- DUMP_ERR_STACK (); |
208 |
+- return -1; |
209 |
+- } |
210 |
+- } |
211 |
+- |
212 |
+- This->userdata = NULL; |
213 |
+- |
214 |
+-/* if a PEM passphrase is defined, set things up so that it can be used */ |
215 |
+- |
216 |
+- if (This->config!=NULL && tn5250_config_get (This->config,"ssl_pem_pass")){ |
217 |
+- TN5250_LOG(("SSL: Setting password callback\n")); |
218 |
+- len = strlen(tn5250_config_get (This->config, "ssl_pem_pass")); |
219 |
+- This->userdata = malloc(len+1); |
220 |
+- strncpy(This->userdata, |
221 |
+- tn5250_config_get (This->config, "ssl_pem_pass"), len); |
222 |
+- SSL_CTX_set_default_passwd_cb(This->ssl_context, |
223 |
+- (pem_password_cb *)ssl_stream_passwd_cb); |
224 |
+- SSL_CTX_set_default_passwd_cb_userdata(This->ssl_context, (void *)This); |
225 |
+- |
226 |
+- } |
227 |
+- |
228 |
+-/* If a certificate file has been defined, load it into this context as well */ |
229 |
+- |
230 |
+- if (This->config!=NULL && tn5250_config_get (This->config, "ssl_cert_file")){ |
231 |
+- TN5250_LOG(("SSL: Loading certificates from certificate file\n")); |
232 |
+- if (SSL_CTX_use_certificate_file(This->ssl_context, |
233 |
+- tn5250_config_get (This->config, "ssl_cert_file"), |
234 |
+- SSL_FILETYPE_PEM) <= 0) { |
235 |
+- DUMP_ERR_STACK (); |
236 |
+- return -1; |
237 |
+- } |
238 |
+- TN5250_LOG(("SSL: Loading private keys from certificate file\n")); |
239 |
+- if (SSL_CTX_use_PrivateKey_file(This->ssl_context, |
240 |
+- tn5250_config_get (This->config, "ssl_cert_file"), |
241 |
+- SSL_FILETYPE_PEM) <= 0) { |
242 |
+- DUMP_ERR_STACK (); |
243 |
+- return -1; |
244 |
+- } |
245 |
+- } |
246 |
+- |
247 |
+- This->ssl_handle = NULL; |
248 |
+- This->connect = ssl_stream_connect; |
249 |
+- This->accept = ssl_stream_accept; |
250 |
+- This->disconnect = ssl_stream_disconnect; |
251 |
+- This->handle_receive = ssl_stream_handle_receive; |
252 |
+- This->send_packet = tn3270_ssl_stream_send_packet; |
253 |
+- This->destroy = ssl_stream_destroy; |
254 |
+- This->streamtype = TN3270E_STREAM; |
255 |
+- return 0; /* Ok */ |
256 |
+-} |
257 |
+- |
258 |
+ /****i* lib5250/ssl_stream_connect |
259 |
+ * NAME |
260 |
+ * ssl_stream_connect |
261 |
+-- |
262 |
+2.7.4 |
263 |
+ |
264 |
+ |
265 |
+From 5922e57bb5ea78ff35f82a60f1721d533cc0584a Mon Sep 17 00:00:00 2001 |
266 |
+From: =?UTF-8?q?Dan=20Hor=C3=A1k?= <dan@×××××.cz> |
267 |
+Date: Mon, 20 Feb 2017 15:37:51 +0100 |
268 |
+Subject: [PATCH 4/4] port to OpenSSL 1.1 |
269 |
+ |
270 |
+- check for better functions in configure |
271 |
+- update SSL initialization call |
272 |
+--- |
273 |
+ configure.ac | 8 ++++---- |
274 |
+ lib5250/sslstream.c | 2 +- |
275 |
+ 2 files changed, 5 insertions(+), 5 deletions(-) |
276 |
+ |
277 |
+diff --git a/configure.ac b/configure.ac |
278 |
+index 4ba0007..8a16cff 100644 |
279 |
+--- a/configure.ac |
280 |
++++ b/configure.ac |
281 |
+@@ -152,13 +152,13 @@ dnl ** happily, we don't have to hunt for them thanks to ldconfig! |
282 |
+ dnl ** |
283 |
+ if test -n $sslincludedir; then |
284 |
+ CPPFLAGS="$CPPFLAGS $sslincludedir" |
285 |
+- AC_CHECK_LIB(crypto,CRYPTO_num_locks) |
286 |
+- if test "$ac_cv_lib_crypto_CRYPTO_num_locks" != "yes" |
287 |
++ AC_CHECK_LIB(crypto,OPENSSL_init) |
288 |
++ if test "$ac_cv_lib_crypto_OPENSSL_init" != "yes" |
289 |
+ then |
290 |
+ AC_MSG_ERROR([** Unable to find OpenSSL libraries!]) |
291 |
+ fi |
292 |
+- AC_CHECK_LIB(ssl,SSL_library_init) |
293 |
+- if test "$ac_cv_lib_ssl_SSL_library_init" != "yes" |
294 |
++ AC_CHECK_LIB(ssl,OPENSSL_init_ssl) |
295 |
++ if test "$ac_cv_lib_ssl_OPENSSL_init_ssl" != "yes" |
296 |
+ then |
297 |
+ AC_MSG_ERROR([** Unable to find OpenSSL libraries!]) |
298 |
+ fi |
299 |
+diff --git a/lib5250/sslstream.c b/lib5250/sslstream.c |
300 |
+index 86d38cf..3c0f390 100644 |
301 |
+--- a/lib5250/sslstream.c |
302 |
++++ b/lib5250/sslstream.c |
303 |
+@@ -368,7 +368,7 @@ int tn5250_ssl_stream_init (Tn5250Stream *This) |
304 |
+ /* initialize SSL library */ |
305 |
+ |
306 |
+ SSL_load_error_strings(); |
307 |
+- SSL_library_init(); |
308 |
++ OPENSSL_init_ssl(0, NULL); |
309 |
+ |
310 |
+ /* which SSL method do we use? */ |
311 |
+ |
312 |
+-- |
313 |
+2.7.4 |
314 |
+ |
315 |
|
316 |
diff --git a/net-misc/tn5250/files/tn5250-0.17.4-openssl11.patch b/net-misc/tn5250/files/tn5250-0.17.4-openssl11.patch |
317 |
new file mode 100644 |
318 |
index 00000000000..8c6d0fde1c7 |
319 |
--- /dev/null |
320 |
+++ b/net-misc/tn5250/files/tn5250-0.17.4-openssl11.patch |
321 |
@@ -0,0 +1,49 @@ |
322 |
+From 5922e57bb5ea78ff35f82a60f1721d533cc0584a Mon Sep 17 00:00:00 2001 |
323 |
+From: =?UTF-8?q?Dan=20Hor=C3=A1k?= <dan@×××××.cz> |
324 |
+Date: Mon, 20 Feb 2017 15:37:51 +0100 |
325 |
+Subject: [PATCH 4/4] port to OpenSSL 1.1 |
326 |
+ |
327 |
+- check for better functions in configure |
328 |
+- update SSL initialization call |
329 |
+--- |
330 |
+ configure.ac | 8 ++++---- |
331 |
+ lib5250/sslstream.c | 2 +- |
332 |
+ 2 files changed, 5 insertions(+), 5 deletions(-) |
333 |
+ |
334 |
+diff --git a/configure.ac b/configure.ac |
335 |
+index 4ba0007..8a16cff 100644 |
336 |
+--- a/configure.ac |
337 |
++++ b/configure.ac |
338 |
+@@ -152,13 +152,13 @@ dnl ** happily, we don't have to hunt for them thanks to ldconfig! |
339 |
+ dnl ** |
340 |
+ if test -n $sslincludedir; then |
341 |
+ CPPFLAGS="$CPPFLAGS $sslincludedir" |
342 |
+- AC_CHECK_LIB(crypto,CRYPTO_num_locks) |
343 |
+- if test "$ac_cv_lib_crypto_CRYPTO_num_locks" != "yes" |
344 |
++ AC_CHECK_LIB(crypto,OPENSSL_init) |
345 |
++ if test "$ac_cv_lib_crypto_OPENSSL_init" != "yes" |
346 |
+ then |
347 |
+ AC_MSG_ERROR([** Unable to find OpenSSL libraries!]) |
348 |
+ fi |
349 |
+- AC_CHECK_LIB(ssl,SSL_library_init) |
350 |
+- if test "$ac_cv_lib_ssl_SSL_library_init" != "yes" |
351 |
++ AC_CHECK_LIB(ssl,OPENSSL_init_ssl) |
352 |
++ if test "$ac_cv_lib_ssl_OPENSSL_init_ssl" != "yes" |
353 |
+ then |
354 |
+ AC_MSG_ERROR([** Unable to find OpenSSL libraries!]) |
355 |
+ fi |
356 |
+diff --git a/lib5250/sslstream.c b/lib5250/sslstream.c |
357 |
+index 86d38cf..3c0f390 100644 |
358 |
+--- a/lib5250/sslstream.c |
359 |
++++ b/lib5250/sslstream.c |
360 |
+@@ -368,7 +368,7 @@ int tn5250_ssl_stream_init (Tn5250Stream *This) |
361 |
+ /* initialize SSL library */ |
362 |
+ |
363 |
+ SSL_load_error_strings(); |
364 |
+- SSL_library_init(); |
365 |
++ OPENSSL_init_ssl(0, NULL); |
366 |
+ |
367 |
+ /* which SSL method do we use? */ |
368 |
+ |
369 |
+-- |
370 |
+2.7.4 |
371 |
|
372 |
diff --git a/net-misc/tn5250/tn5250-0.17.4-r3.ebuild b/net-misc/tn5250/tn5250-0.17.4-r3.ebuild |
373 |
new file mode 100644 |
374 |
index 00000000000..b28b5cc3723 |
375 |
--- /dev/null |
376 |
+++ b/net-misc/tn5250/tn5250-0.17.4-r3.ebuild |
377 |
@@ -0,0 +1,58 @@ |
378 |
+# Copyright 1999-2019 Gentoo Authors |
379 |
+# Distributed under the terms of the GNU General Public License v2 |
380 |
+ |
381 |
+EAPI=7 |
382 |
+inherit autotools |
383 |
+ |
384 |
+DESCRIPTION="IBM AS/400 telnet client which emulates 5250 terminals/printers" |
385 |
+HOMEPAGE="http://tn5250.sourceforge.net/" |
386 |
+SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz" |
387 |
+ |
388 |
+LICENSE="LGPL-2.1" |
389 |
+SLOT="0" |
390 |
+KEYWORDS="~amd64 ~ppc ~sparc ~x86" |
391 |
+IUSE="libressl ssl" |
392 |
+ |
393 |
+RDEPEND=" |
394 |
+ sys-libs/ncurses:0= |
395 |
+ ssl? ( |
396 |
+ !libressl? ( dev-libs/openssl:0= ) |
397 |
+ libressl? ( dev-libs/libressl:0= ) |
398 |
+ ) |
399 |
+" |
400 |
+ |
401 |
+DEPEND="${RDEPEND}" |
402 |
+ |
403 |
+PATCHES=( |
404 |
+ "${FILESDIR}"/${PN}-0.17.4-disable-sslv2-and-sslv3.patch |
405 |
+ "${FILESDIR}"/${PN}-0.17.4-fix-Wformat-security-warnings.patch |
406 |
+ "${FILESDIR}"/${PN}-0.17.4-tinfo.patch |
407 |
+ "${FILESDIR}"/${PN}-0.17.4-whoami.patch |
408 |
+ "${FILESDIR}"/${PN}-0.17.4-duplicate-definition.patch |
409 |
+) |
410 |
+ |
411 |
+src_prepare() { |
412 |
+ default |
413 |
+ if has_version ">=dev-libs/openssl-1.1.1"; then |
414 |
+ eapply "${FILESDIR}"/${PN}-0.17.4-openssl11.patch |
415 |
+ fi |
416 |
+ eautoreconf |
417 |
+} |
418 |
+ |
419 |
+src_configure() { |
420 |
+ econf \ |
421 |
+ $(use_with ssl) \ |
422 |
+ --disable-static \ |
423 |
+ --without-python |
424 |
+} |
425 |
+ |
426 |
+src_install() { |
427 |
+ # The TERMINFO variable needs to be defined for the install |
428 |
+ # to work, because the install calls "tic." man tic for |
429 |
+ # details. |
430 |
+ dodir /usr/share/terminfo |
431 |
+ emake DESTDIR="${D}" TERMINFO="${D}/usr/share/terminfo" install |
432 |
+ |
433 |
+ einstalldocs |
434 |
+ find "${D}" -name '*.la' -delete || die |
435 |
+} |