diff options
-rw-r--r-- | alpine/PKGBUILD | 9 | ||||
-rw-r--r-- | alpine/compilation3.patch | 101 |
2 files changed, 107 insertions, 3 deletions
diff --git a/alpine/PKGBUILD b/alpine/PKGBUILD index 6978e47f7..257e267ed 100644 --- a/alpine/PKGBUILD +++ b/alpine/PKGBUILD @@ -2,7 +2,7 @@ # Contributor: Adrian C. <anrxc..sysphere.org> pkgname=alpine -pkgver=2.21.99999.r18.90e12ea +pkgver=2.21.99999.r20.87e4a6a _commit=${pkgver##*.} pkgrel=1 arch=("i686" "pentium4" "x86_64") @@ -22,15 +22,18 @@ source=( "alpine::git://repo.or.cz/alpine.git#commit=${_commit}" 'rules.patch' 'topal-patch.patch' + 'compilation3.patch' ) sha512sums=('SKIP' 'b6719c245e5539af07d18b14e4e30e47c8ac1fcd91b431de40e8c0968c09707c1476adb1d322567e0683f28923022aed07291781de055298b49e39d897dbec23' - 'bdaf9f0ed2bb9d10eaf4b456e24684cd09eb9e97ae2cf6eb4a2bc2bb5e231e8254d79efa63da9918022302fd970180f2dcd90a69d8c8d817c729c6a18fd6d506') + 'bdaf9f0ed2bb9d10eaf4b456e24684cd09eb9e97ae2cf6eb4a2bc2bb5e231e8254d79efa63da9918022302fd970180f2dcd90a69d8c8d817c729c6a18fd6d506' + '3f5413e0ee83de228b8bd158fe006d68b7e0172df3968cb5db927ba7c257076791b873424e7693140d250d7bf40e4dbdb3bd91fae8f3a9d99e00d88d29c2e6ad') prepare() { cd "${srcdir}/${pkgname}" patch -p1 -i "${srcdir}/topal-patch.patch" patch -p1 -i "${srcdir}/rules.patch" + patch -p1 -i "${srcdir}/compilation3.patch" } pkgver() { @@ -71,7 +74,7 @@ build() { # Configure Alpine ./configure --prefix=/usr \ --with-passfile=.pine-passfile \ - --without-tcl --disable-shared \ + --without-tcl \ --with-system-pinerc=/etc/${pkgname}.d/pine.conf \ --with-system-fixed-pinerc=/etc/${pkgname}.d/pine.conf.fixed diff --git a/alpine/compilation3.patch b/alpine/compilation3.patch new file mode 100644 index 000000000..5379efe6d --- /dev/null +++ b/alpine/compilation3.patch @@ -0,0 +1,101 @@ +diff --git a/imap/src/osdep/nt/ssl_nt.c b/imap/src/osdep/nt/ssl_nt.c +index 3b0118d..d39fdf0 100644 +--- a/imap/src/osdep/nt/ssl_nt.c ++++ b/imap/src/osdep/nt/ssl_nt.c +@@ -501,7 +501,7 @@ static int ssl_open_verify (int ok,X509_STORE_CTX *ctx) + + static char *ssl_validate_cert (X509 *cert,char *host) + { +- int i,j,n; ++ int i,j,n, m = 0;; + char *s=NULL,*t,*ret = NIL; + void *ext; + GENERAL_NAME *name; +@@ -511,9 +511,11 @@ static char *ssl_validate_cert (X509 *cert,char *host) + /* make sure have a certificate */ + if (!cert) return "No certificate from server"; + /* Method 1: locate CN */ ++#ifndef OPENSSL_1_1_0 + if (cert->name == NIL) + ret = "No name in certificate"; + else if ((s = strstr (cert->name,"/CN=")) != NIL) { ++ m++; /* count that we tried this method */ + if (t = strchr (s += 4,'/')) *t = '\0'; + /* host name matches pattern? */ + ret = ssl_compare_hostnames (host,s) ? NIL : +@@ -528,8 +530,10 @@ static char *ssl_validate_cert (X509 *cert,char *host) + (name->type = GEN_DNS) && (s = name->d.ia5->data) && + ssl_compare_hostnames (host,s)) ret = NIL; + } ++#endif /* OPENSSL_1_1_0 */ + /* Method 2, use Cname */ +- if(ret != NIL){ ++ if(m == 0 || ret != NIL){ ++ cname = X509_get_subject_name(cert); + for(j = 0, ret = NIL; j < X509_NAME_entry_count(cname) && ret == NIL; j++){ + if((e = X509_NAME_get_entry(cname, j)) != NULL){ + X509_NAME_get_text_by_OBJ(cname, X509_NAME_ENTRY_get_object(e), buf, sizeof(buf)); +@@ -552,7 +556,11 @@ static char *ssl_validate_cert (X509 *cert,char *host) + } + } + +- if (ret == NIL && !cert->name && !(cname = X509_get_subject_name(cert))) ++ if (ret == NIL ++#ifndef OPENSSL_1_1_0 ++ && !cert->name ++#endif /* OPENSSL_1_1_9 */ ++ && !X509_get_subject_name(cert)) + ret = "No name in certificate"; + + if (ret == NIL && s == NIL) +diff --git a/imap/src/osdep/unix/ssl_unix.c b/imap/src/osdep/unix/ssl_unix.c +index 0033e55..24f91e1 100644 +--- a/imap/src/osdep/unix/ssl_unix.c ++++ b/imap/src/osdep/unix/ssl_unix.c +@@ -504,7 +504,7 @@ static int ssl_open_verify (int ok,X509_STORE_CTX *ctx) + + static char *ssl_validate_cert (X509 *cert,char *host) + { +- int i,j,n; ++ int i,j,n, m = 0; + char *s=NULL,*t,*ret = NIL; + void *ext; + GENERAL_NAME *name; +@@ -514,9 +514,11 @@ static char *ssl_validate_cert (X509 *cert,char *host) + /* make sure have a certificate */ + if (!cert) return "No certificate from server"; + /* Method 1: locate CN */ ++#ifndef OPENSSL_1_1_0 + if (cert->name == NIL) + ret = "No name in certificate"; + else if ((s = strstr (cert->name,"/CN=")) != NIL) { ++ m++; /* count that we tried this method */ + if (t = strchr (s += 4,'/')) *t = '\0'; + /* host name matches pattern? */ + ret = ssl_compare_hostnames (host,s) ? NIL : +@@ -531,8 +533,10 @@ static char *ssl_validate_cert (X509 *cert,char *host) + (name->type = GEN_DNS) && (s = name->d.ia5->data) && + ssl_compare_hostnames (host,s)) ret = NIL; + } +- /* Method 2, use Cname */ +- if(ret != NIL){ ++#endif /* OPENSSL_1_1_0 */ ++ /* Method 2, use cname */ ++ if(m == 0 || ret != NIL){ ++ cname = X509_get_subject_name(cert); + for(j = 0, ret = NIL; j < X509_NAME_entry_count(cname) && ret == NIL; j++){ + if((e = X509_NAME_get_entry(cname, j)) != NULL){ + X509_NAME_get_text_by_OBJ(cname, X509_NAME_ENTRY_get_object(e), buf, sizeof(buf)); +@@ -555,7 +559,11 @@ static char *ssl_validate_cert (X509 *cert,char *host) + } + } + +- if (ret == NIL && !cert->name && !(cname = X509_get_subject_name(cert))) ++ if (ret == NIL ++#ifndef OPENSSL_1_1_0 ++ && !cert->name ++#endif /* OPENSSL_1_1_0 */ ++ && !X509_get_subject_name(cert)) + ret = "No name in certificate"; + + if (ret == NIL && s == NIL) |