summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--alpine/PKGBUILD9
-rw-r--r--alpine/compilation3.patch101
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)