pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/net/netatalk22 Update for new openssl API.



details:   https://anonhg.NetBSD.org/pkgsrc/rev/c9f1538c8ba4
branches:  trunk
changeset: 334695:c9f1538c8ba4
user:      rjs <rjs%pkgsrc.org@localhost>
date:      Sun Jun 02 20:03:32 2019 +0000

description:
Update for new openssl API.

Should fix PR pkg/53407.

diffstat:

 net/netatalk22/Makefile                                   |    4 +-
 net/netatalk22/distinfo                                   |    5 +-
 net/netatalk22/patches/patch-etc_uams_uams__dhx__pam.c    |   61 ++++++++
 net/netatalk22/patches/patch-etc_uams_uams__dhx__passwd.c |   43 +++++
 net/netatalk22/patches/patch-etc_uams_uams__randnum.c     |  104 ++++++++++++++
 5 files changed, 214 insertions(+), 3 deletions(-)

diffs (252 lines):

diff -r 99fd5d445bc5 -r c9f1538c8ba4 net/netatalk22/Makefile
--- a/net/netatalk22/Makefile   Sun Jun 02 18:45:17 2019 +0000
+++ b/net/netatalk22/Makefile   Sun Jun 02 20:03:32 2019 +0000
@@ -1,8 +1,8 @@
-# $NetBSD: Makefile,v 1.19 2018/11/14 22:22:13 kleink Exp $
+# $NetBSD: Makefile,v 1.20 2019/06/02 20:03:32 rjs Exp $
 
 DISTNAME=      netatalk-2.2.6
 PKGNAME=        ${DISTNAME:C/-/22-/}
-PKGREVISION=   9
+PKGREVISION=   10
 CATEGORIES=    net print
 MASTER_SITES=  ${MASTER_SITE_SOURCEFORGE:=netatalk/}
 EXTRACT_SUFX=  .tar.bz2
diff -r 99fd5d445bc5 -r c9f1538c8ba4 net/netatalk22/distinfo
--- a/net/netatalk22/distinfo   Sun Jun 02 18:45:17 2019 +0000
+++ b/net/netatalk22/distinfo   Sun Jun 02 20:03:32 2019 +0000
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.6 2017/07/12 13:56:00 hauke Exp $
+$NetBSD: distinfo,v 1.7 2019/06/02 20:03:32 rjs Exp $
 
 SHA1 (netatalk-2.2.6.tar.bz2) = 98a2d33f2e240e49caec32b83bca579723ce87f7
 RMD160 (netatalk-2.2.6.tar.bz2) = c7b051cf89d30c9bf1d491d9e04ceee2f39b897d
@@ -7,5 +7,8 @@
 SHA1 (patch-config_Makefile.in) = 6b9f545e5ddb178e9a310cec4de300c02557e685
 SHA1 (patch-configure) = 9919625c3cd54e34ab45c6606094e12215630d33
 SHA1 (patch-distrib_initscripts_Makefile.in) = 706890f9e0aacab4d523cc1900048b7fab96f5d4
+SHA1 (patch-etc_uams_uams__dhx__pam.c) = 9c75c8562271204c6be974af189e48a9a1b35e11
+SHA1 (patch-etc_uams_uams__dhx__passwd.c) = eb950f16b8d9c00ff45e40769f01850138e76176
+SHA1 (patch-etc_uams_uams__randnum.c) = ff9f698156e0954000e95ac0fbd9b9604d15b8d1
 SHA1 (patch-include_atalk_ldapconfig.h) = 05aa673fce4c670af252b298b1a9e820b1fc7adb
 SHA1 (patch-libatalk_bstring_bstrlib.c) = f43818328237b908166f956de464f532d578d2c4
diff -r 99fd5d445bc5 -r c9f1538c8ba4 net/netatalk22/patches/patch-etc_uams_uams__dhx__pam.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/net/netatalk22/patches/patch-etc_uams_uams__dhx__pam.c    Sun Jun 02 20:03:32 2019 +0000
@@ -0,0 +1,61 @@
+$NetBSD: patch-etc_uams_uams__dhx__pam.c,v 1.1 2019/06/02 20:03:32 rjs Exp $
+
+--- etc/uams/uams_dhx_pam.c.orig       2014-03-16 11:17:48.000000000 +0000
++++ etc/uams/uams_dhx_pam.c
+@@ -190,6 +190,7 @@ static int dhx_setup(void *obj, char *ib
+     u_int16_t sessid;
+     size_t i;
+     BIGNUM *bn, *gbn, *pbn;
++    const BIGNUM *pub_key;
+     DH *dh;
+ 
+     /* get the client's public key */
+@@ -233,9 +234,16 @@ static int dhx_setup(void *obj, char *ib
+       return AFPERR_PARAM;
+     }
+ 
++    if (!DH_set0_pqg(dh, pbn, NULL, gbn)) {
++      BN_free(pbn);
++      BN_free(gbn);
++    /* Log Entry */
++      LOG(log_info, logtype_uams, "uams_dhx_pam.c :PAM DH_set0_pqg() mysteriously failed  -- %s", strerror(errno));
++    /* Log Entry */
++      goto pam_fail;
++    }
++
+     /* generate key and make sure that we have enough space */
+-    dh->p = pbn;
+-    dh->g = gbn;
+     if (DH_generate_key(dh) == 0) {
+       unsigned long dherror;
+       char errbuf[256];
+@@ -249,16 +257,17 @@ static int dhx_setup(void *obj, char *ib
+       ERR_free_strings();
+       goto pam_fail;
+     }
+-    if (BN_num_bytes(dh->pub_key) > KEYSIZE) {
++    DH_get0_key(dh, &pub_key, NULL);
++    if (BN_num_bytes(pub_key) > KEYSIZE) {
+       LOG(log_info, logtype_uams, "uams_dhx_pam.c :PAM: Err Generating Key -- Not enough Space? -- %s", strerror(errno));
+       goto pam_fail;
+     }
+ 
+     /* figure out the key. store the key in rbuf for now. */
+-    i = DH_compute_key(rbuf, bn, dh);
++    i = DH_compute_key((unsigned char *)rbuf, bn, dh);
+     
+     /* set the key */
+-    CAST_set_key(&castkey, i, rbuf);
++    CAST_set_key(&castkey, i, (unsigned char *)rbuf);
+     
+     /* session id. it's just a hashed version of the object pointer. */
+     sessid = dhxhash(obj);
+@@ -267,7 +276,7 @@ static int dhx_setup(void *obj, char *ib
+     *rbuflen += sizeof(sessid);
+     
+     /* public key */
+-    BN_bn2bin(dh->pub_key, rbuf); 
++    BN_bn2bin(pub_key, (unsigned char *)rbuf); 
+     rbuf += KEYSIZE;
+     *rbuflen += KEYSIZE;
+ 
diff -r 99fd5d445bc5 -r c9f1538c8ba4 net/netatalk22/patches/patch-etc_uams_uams__dhx__passwd.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/net/netatalk22/patches/patch-etc_uams_uams__dhx__passwd.c Sun Jun 02 20:03:32 2019 +0000
@@ -0,0 +1,43 @@
+$NetBSD: patch-etc_uams_uams__dhx__passwd.c,v 1.1 2019/06/02 20:03:32 rjs Exp $
+
+--- etc/uams/uams_dhx_passwd.c.orig    2014-03-16 11:17:48.000000000 +0000
++++ etc/uams/uams_dhx_passwd.c
+@@ -81,6 +81,7 @@ static int pwd_login(void *obj, char *us
+     struct spwd *sp;
+ #endif /* SHADOWPW */
+     BIGNUM *bn, *gbn, *pbn;
++    const BIGNUM *pub_key;
+     u_int16_t sessid;
+     size_t i;
+     DH *dh;
+@@ -144,10 +145,18 @@ static int pwd_login(void *obj, char *us
+       return AFPERR_PARAM;
+     }
+ 
++    if (!DH_set0_pqg(dh, pbn, NULL, gbn)) {
++      BN_free(pbn);
++      BN_free(gbn);
++      goto passwd_fail;
++    }
++
+     /* generate key and make sure we have enough space */
+-    dh->p = pbn;
+-    dh->g = gbn;
+-    if (!DH_generate_key(dh) || (BN_num_bytes(dh->pub_key) > KEYSIZE)) {
++    if (!DH_generate_key(dh)) {
++      goto passwd_fail;
++    }
++    DH_get0_key(dh, &pub_key, NULL);
++    if (BN_num_bytes(pub_key) > KEYSIZE) {
+       goto passwd_fail;
+     }
+ 
+@@ -164,7 +173,7 @@ static int pwd_login(void *obj, char *us
+     *rbuflen += sizeof(sessid);
+     
+     /* send our public key */
+-    BN_bn2bin(dh->pub_key, (unsigned char *)rbuf); 
++    BN_bn2bin(pub_key, (unsigned char *)rbuf); 
+     rbuf += KEYSIZE;
+     *rbuflen += KEYSIZE;
+ 
diff -r 99fd5d445bc5 -r c9f1538c8ba4 net/netatalk22/patches/patch-etc_uams_uams__randnum.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/net/netatalk22/patches/patch-etc_uams_uams__randnum.c     Sun Jun 02 20:03:32 2019 +0000
@@ -0,0 +1,104 @@
+$NetBSD: patch-etc_uams_uams__randnum.c,v 1.1 2019/06/02 20:03:32 rjs Exp $
+
+--- etc/uams/uams_randnum.c.orig       2017-07-09 11:03:31.000000000 +0000
++++ etc/uams/uams_randnum.c
+@@ -55,8 +55,8 @@ char *strchr (), *strrchr ();
+ 
+ #define PASSWDLEN 8
+ 
+-static C_Block                seskey;
+-static Key_schedule   seskeysched;
++static DES_cblock     seskey;
++static DES_key_schedule       seskeysched;
+ static struct passwd  *randpwd;
+ static u_int8_t         randbuf[8];
+ 
+@@ -146,7 +146,7 @@ static int afppasswd(const struct passwd
+ {
+   u_int8_t key[DES_KEY_SZ*2];
+   char buf[MAXPATHLEN + 1], *p;
+-  Key_schedule        schedule;
++  DES_key_schedule    schedule;
+   FILE *fp;
+   unsigned int i, j;
+   int keyfd = -1, err = 0;
+@@ -203,17 +203,17 @@ afppasswd_found:
+       key[j] = (unhex(key[i]) << 4) | unhex(key[i + 1]);
+       if (j <= DES_KEY_SZ)
+       memset(key + j, 0, sizeof(key) - j);
+-      key_sched((C_Block *) key, schedule);
++      DES_key_sched((DES_cblock *) key, &schedule);
+       memset(key, 0, sizeof(key));
+ 
+       if (set) {
+       /* NOTE: this takes advantage of the fact that passwd doesn't
+        *       get used after this call if it's being set. */
+-      ecb_encrypt((C_Block *) passwd, (C_Block *) passwd, schedule,
++      DES_ecb_encrypt((DES_cblock *) passwd, (DES_cblock *) passwd, &schedule,
+                   DES_ENCRYPT);
+       } else {
+       /* decrypt the password */
+-      ecb_encrypt((C_Block *) p, (C_Block *) p, schedule, DES_DECRYPT);
++      DES_ecb_encrypt((DES_cblock *) p, (DES_cblock *) p, &schedule, DES_DECRYPT);
+       }
+       memset(&schedule, 0, sizeof(schedule));
+   }
+@@ -362,10 +362,10 @@ static int randnum_logincont(void *obj, 
+ 
+   /* encrypt. this saves a little space by using the fact that
+    * des can encrypt in-place without side-effects. */
+-  key_sched((C_Block *) seskey, seskeysched);
++  DES_key_sched((DES_cblock *) seskey, &seskeysched);
+   memset(seskey, 0, sizeof(seskey));
+-  ecb_encrypt((C_Block *) randbuf, (C_Block *) randbuf,
+-             seskeysched, DES_ENCRYPT);
++  DES_ecb_encrypt((DES_cblock *) randbuf, (DES_cblock *) randbuf,
++             &seskeysched, DES_ENCRYPT);
+   memset(&seskeysched, 0, sizeof(seskeysched));
+ 
+   /* test against what the client sent */
+@@ -406,10 +406,10 @@ static int rand2num_logincont(void *obj,
+     seskey[i] <<= 1;
+ 
+   /* encrypt randbuf */
+-  key_sched((C_Block *) seskey, seskeysched);
++  DES_key_sched((DES_cblock *) seskey, &seskeysched);
+   memset(seskey, 0, sizeof(seskey));
+-  ecb_encrypt( (C_Block *) randbuf, (C_Block *) randbuf,
+-             seskeysched, DES_ENCRYPT);
++  DES_ecb_encrypt((DES_cblock *) randbuf, (DES_cblock *) randbuf,
++             &seskeysched, DES_ENCRYPT);
+ 
+   /* test against client's reply */
+   if (memcmp(randbuf, ibuf, sizeof(randbuf))) { /* != */
+@@ -421,8 +421,8 @@ static int rand2num_logincont(void *obj,
+   memset(randbuf, 0, sizeof(randbuf));
+ 
+   /* encrypt client's challenge and send back */
+-  ecb_encrypt( (C_Block *) ibuf, (C_Block *) rbuf,
+-             seskeysched, DES_ENCRYPT);
++  DES_ecb_encrypt((DES_cblock *) ibuf, (DES_cblock *) rbuf,
++             &seskeysched, DES_ENCRYPT);
+   memset(&seskeysched, 0, sizeof(seskeysched));
+   *rbuflen = sizeof(randbuf);
+   
+@@ -457,15 +457,15 @@ static int randnum_changepw(void *obj, c
+       return err;
+ 
+     /* use old passwd to decrypt new passwd */
+-    key_sched((C_Block *) seskey, seskeysched);
++    DES_key_sched((DES_cblock *) seskey, &seskeysched);
+     ibuf += PASSWDLEN; /* new passwd */
+     ibuf[PASSWDLEN] = '\0';
+-    ecb_encrypt( (C_Block *) ibuf, (C_Block *) ibuf, seskeysched, DES_DECRYPT);
++    DES_ecb_encrypt((DES_cblock *) ibuf, (DES_cblock *) ibuf, &seskeysched, DES_DECRYPT);
+ 
+     /* now use new passwd to decrypt old passwd */
+-    key_sched((C_Block *) ibuf, seskeysched);
++    DES_key_sched((DES_cblock *) ibuf, &seskeysched);
+     ibuf -= PASSWDLEN; /* old passwd */
+-    ecb_encrypt((C_Block *) ibuf, (C_Block *) ibuf, seskeysched, DES_DECRYPT);
++    DES_ecb_encrypt((DES_cblock *) ibuf, (DES_cblock *) ibuf, &seskeysched, DES_DECRYPT);
+     if (memcmp(seskey, ibuf, sizeof(seskey))) 
+       err = AFPERR_NOTAUTH;
+     else if (memcmp(seskey, ibuf + PASSWDLEN, sizeof(seskey)) == 0)



Home | Main Index | Thread Index | Old Index