aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMuhammad Moinur Rahman <bofh@FreeBSD.org>2022-05-31 06:14:13 +0000
committerMuhammad Moinur Rahman <bofh@FreeBSD.org>2022-05-31 06:14:13 +0000
commit399af2d69e8383a7e77ba9dfa0e3bd02bbdc9ab6 (patch)
treef7d4bcca8fd25e0f4911674b5e74fdf150a451b6
parent89b8dcd9b00814ce55e335e4cd575c70d6e322e5 (diff)
downloadports-399af2d69e8383a7e77ba9dfa0e3bd02bbdc9ab6.tar.gz
ports-399af2d69e8383a7e77ba9dfa0e3bd02bbdc9ab6.zip
databases/freetds: Runtime fix with latest openssl
- FreeTDS fails to connect with MsSQL after the latest updates of OpenSSL specially after the release of 13.1 SNAPSHOTS including 13.1-RELEASE and more specifically when openssl turned into 1.1.1l See the following for more details: https://github.com/FreeTDS/freetds/issues/458 - After the upgrade to version 1.3.9 FreeTDS fails to upgrade when using ports tree. [1] PR: 261967 263641 [1] Reported by: jsc@ntu.edu.tw eugen [1]
-rw-r--r--databases/freetds/Makefile4
-rw-r--r--databases/freetds/files/patch-src_tds_tls.c70
2 files changed, 68 insertions, 6 deletions
diff --git a/databases/freetds/Makefile b/databases/freetds/Makefile
index a9cce45c5a65..0283890c5679 100644
--- a/databases/freetds/Makefile
+++ b/databases/freetds/Makefile
@@ -2,6 +2,7 @@
PORTNAME= freetds
PORTVERSION= 1.3.10
+PORTREVISION= 1
PORTEPOCH= 1
CATEGORIES= databases
MASTER_SITES= https://www.freetds.org/files/stable/ \
@@ -75,7 +76,8 @@ post-patch:
${WRKSRC}/Makefile.am
@${REINPLACE_CMD} -e 's|/pool.conf|/pool.conf.sample|g' \
${WRKSRC}/src/pool/Makefile.am
- @${REINPLACE_CMD} -e 's|\($$with_iodbc/include\)|\1/libiodbc|g' \
+ @${REINPLACE_CMD} -e 's|\($$with_iodbc/include\)|\1/libiodbc|g ; \
+ s| odbcss.h||g' \
${WRKSRC}/configure.ac
post-install:
diff --git a/databases/freetds/files/patch-src_tds_tls.c b/databases/freetds/files/patch-src_tds_tls.c
index 07a8cb8ec5ac..35612e6faff3 100644
--- a/databases/freetds/files/patch-src_tds_tls.c
+++ b/databases/freetds/files/patch-src_tds_tls.c
@@ -1,6 +1,6 @@
---- src/tds/tls.c.orig 2017-11-30 09:00:01 UTC
+--- src/tds/tls.c.orig 2021-08-31 09:00:01 UTC
+++ src/tds/tls.c
-@@ -50,6 +50,10 @@
+@@ -53,6 +53,10 @@
#include <sys/socket.h>
#endif
@@ -9,9 +9,18 @@
+#endif
+
#include <freetds/tds.h>
- #include <freetds/string.h>
+ #include <freetds/utils/string.h>
#include <freetds/tls.h>
-@@ -72,6 +76,15 @@
+@@ -63,7 +67,7 @@
+
+ /**
+ * \addtogroup network
+- * @{
++ * @{
+ */
+
+ #if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
+@@ -75,6 +79,15 @@
#define SSL_PTR ptr
#else
@@ -25,5 +34,56 @@
+#endif
+
/* some compatibility layer */
- #if OPENSSL_VERSION_NUMBER < 0x1010000FL
+ #if !HAVE_BIO_GET_DATA
static inline void
+@@ -115,7 +128,7 @@ tds_pull_func_login(SSL_PULL_ARGS)
+ int have;
+
+ tdsdump_log(TDS_DBG_FUNC, "in tds_pull_func_login\n");
+-
++
+ /* here we are initializing (crypted inside TDS packets) */
+
+ /* if we have some data send it */
+@@ -450,7 +463,7 @@ tds_ssl_init(TDSSOCKET *tds)
+ const char *tls_msg;
+
+ xcred = NULL;
+- session = NULL;
++ session = NULL;
+ tls_msg = "initializing tls";
+
+ if (!tls_initialized) {
+@@ -826,18 +839,25 @@ check_name_match(ASN1_STRING *name, const char *hostna
+ static int
+ check_name_match(ASN1_STRING *name, const char *hostname)
+ {
+- char *name_utf8 = NULL;
++ char *name_utf8 = NULL, *tmp_name;
+ int ret, name_len;
+
+ name_len = ASN1_STRING_to_UTF8((unsigned char **) &name_utf8, name);
+ if (name_len < 0)
+ return 0;
+
++ tmp_name = tds_strndup(name_utf8, name_len);
++ OPENSSL_free(name_utf8);
++ if (!tmp_name)
++ return 0;
++
++ name_utf8 = tmp_name;
++
+ tdsdump_log(TDS_DBG_INFO1, "Got name %s\n", name_utf8);
+ ret = 0;
+ if (strlen(name_utf8) == name_len && check_wildcard(name_utf8, hostname))
+ ret = 1;
+- OPENSSL_free(name_utf8);
++ free(name_utf8);
+ return ret;
+ }
+
+@@ -1095,4 +1115,3 @@ tds_ssl_deinit(TDSCONNECTION *conn)
+
+ #endif
+ /** @} */
+-