diff options
author | John-Michael Mulesa | 2020-07-28 13:48:13 +1000 |
---|---|---|
committer | John-Michael Mulesa | 2020-07-28 13:48:13 +1000 |
commit | 81cf0215664a1dd730a19ca9cba3bffd58058221 (patch) | |
tree | 9ee85818e1b2fd380390b5918ce580b129794536 | |
download | aur-81cf0215664a1dd730a19ca9cba3bffd58058221.tar.gz |
Resurrect netatalk-ddp (netatalk 2) from old AUR.
Some patches were sourced from NetBSD and Fedora; many thanks :)
-rw-r--r-- | .SRCINFO | 45 | ||||
-rw-r--r-- | PKGBUILD | 62 | ||||
-rw-r--r-- | netatalk-current_vol.patch | 10 | ||||
-rw-r--r-- | netatalk-ddp.install | 15 | ||||
-rw-r--r-- | netatalk-invalid_dircache_entries.patch | 22 | ||||
-rw-r--r-- | netatalk-papd_print_cups.patch | 123 | ||||
-rw-r--r-- | netatalk-uams_dhx_pam.patch | 60 | ||||
-rw-r--r-- | netatalk-uams_dhx_passwd.patch | 42 | ||||
-rw-r--r-- | netatalk-uams_randnum.patch | 104 |
9 files changed, 483 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..189f21978d19 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,45 @@ +pkgbase = netatalk-ddp + pkgdesc = A kernel-level implementation of AppleTalk, AFP, and PAP services + pkgver = 2.2.6 + pkgrel = 1 + url = http://netatalk.sourceforge.net + install = netatalk-ddp.install + arch = i686 + arch = x86_64 + license = GPL + depends = openslp + depends = libcups + depends = libgcrypt>=1.2.3 + depends = libtirpc + depends = libwrap + depends = rpcsvc-proto + optdepends = cups: required for PAP support + conflicts = netatalk + replaces = netatalk-git + replaces = netatalk2 + options = !libtool + backup = etc/netatalk/afpd.conf + backup = etc/netatalk/afp_ldap.conf + backup = etc/netatalk/netatalk.conf + backup = etc/netatalk/AppleVolumes.default + backup = etc/netatalk/AppleVolumes.system + backup = etc/netatalk/atalkd.conf + backup = etc/netatalk/papd.conf + backup = etc/pam.d/netatalk + source = https://svwh.dl.sourceforge.net/project/netatalk/netatalk/2.2.6/netatalk-2.2.6.tar.bz2 + source = netatalk-invalid_dircache_entries.patch + source = netatalk-current_vol.patch + source = netatalk-uams_dhx_passwd.patch + source = netatalk-uams_dhx_pam.patch + source = netatalk-uams_randnum.patch + source = netatalk-papd_print_cups.patch + md5sums = cd8ca5be7ebb0ac42d5576f401a8a8ba + md5sums = e56ca98c7399916d73cd6de1beb4a567 + md5sums = 3a9237d97a109e1d7923c93e6c91c182 + md5sums = be2aae358f7e119cac04d0647b313dde + md5sums = ced20afc4ac36220efbb452fc8d56881 + md5sums = e57f9714b04c9b52f40260ed62dce82d + md5sums = 6d8c7d17632dcb6d062987dba43089f0 + +pkgname = netatalk-ddp + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..0fc0e81293a4 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,62 @@ +# Maintainer: John-Michael Mulesa <jmulesa@gmail.com> +# Contributor: SJ_UnderWater +# Based on netatalk package: +# Maintainer: Dominik Dingel <mail at wodar dot de> +# Contributor: William Udovich <nerdzrule7 at earthlink dot net> +# Contributor: Farhan Yousaf <farhany at xaviya dot com> + +pkgbase=netatalk-ddp +pkgname=netatalk-ddp +pkgver=2.2.6 +pkgrel=1 +pkgdesc='A kernel-level implementation of AppleTalk, AFP, and PAP services' +arch=('i686' 'x86_64') +url='http://netatalk.sourceforge.net' +license=('GPL') +depends=('openslp' 'libcups' 'libgcrypt>=1.2.3' 'libtirpc' 'libwrap' 'rpcsvc-proto') +optdepends=('cups: required for PAP support') +replaces=('netatalk-git' 'netatalk2') +conflicts=('netatalk') +backup=('etc/netatalk/afpd.conf' + 'etc/netatalk/afp_ldap.conf' + 'etc/netatalk/netatalk.conf' + 'etc/netatalk/AppleVolumes.default' + 'etc/netatalk/AppleVolumes.system' + 'etc/netatalk/atalkd.conf' + 'etc/netatalk/papd.conf' + 'etc/pam.d/netatalk') +options=('!libtool') +install=$pkgname.install +source=(https://svwh.dl.sourceforge.net/project/netatalk/netatalk/$pkgver/netatalk-$pkgver.tar.bz2 netatalk-invalid_dircache_entries.patch netatalk-current_vol.patch netatalk-uams_dhx_passwd.patch netatalk-uams_dhx_pam.patch netatalk-uams_randnum.patch netatalk-papd_print_cups.patch) +md5sums=('cd8ca5be7ebb0ac42d5576f401a8a8ba' + 'e56ca98c7399916d73cd6de1beb4a567' + '3a9237d97a109e1d7923c93e6c91c182' + 'be2aae358f7e119cac04d0647b313dde' + 'ced20afc4ac36220efbb452fc8d56881' + 'e57f9714b04c9b52f40260ed62dce82d' + '6d8c7d17632dcb6d062987dba43089f0') + +build() { + cd netatalk-$pkgver + msg2 'Fixing...' + patch --forward --strip=1 --input="${srcdir}/netatalk-invalid_dircache_entries.patch" + patch --forward --strip=1 --input="${srcdir}/netatalk-current_vol.patch" + patch --forward --strip=0 --input="${srcdir}/netatalk-uams_randnum.patch" + patch --forward --strip=0 --input="${srcdir}/netatalk-uams_dhx_passwd.patch" + patch --forward --strip=0 --input="${srcdir}/netatalk-uams_dhx_pam.patch" + patch --forward --strip=0 --input="${srcdir}/netatalk-papd_print_cups.patch" + sed -i 's/#include <unistd.h>/#include <stdlib.h>\n#include <unistd.h>/' contrib/a2boot/a2boot.c + sed -i 's:/lib:/usr/lib:' distrib/initscripts/Makefile.{am,in} + msg2 'Configuring...' + CFLAGS="-O -I/usr/include/tirpc" CPPFLAGS="-DNEED_RQUOTA -D_IPP_PRIVATE_STRUCTURES" LIBS="-ltirpc" ./configure --prefix=/usr --localstatedir=/var --libexecdir='${libdir}' \ + --disable-static --enable-shared --with-cracklib --with-cnid-cdb-backend --enable-systemd --enable-fhs --enable-ddp --enable-srvloc --enable-timelord --enable-cups --enable-a2boot --enable-tcp-wrappers + msg2 'Making...' + make +} +package() { + cd netatalk-$pkgver + msg2 'Building...' + make DESTDIR="$pkgdir" install + msg2 'Moving Files...' + rm "$pkgdir"/usr/include/netatalk/at.h +} diff --git a/netatalk-current_vol.patch b/netatalk-current_vol.patch new file mode 100644 index 000000000000..cdd4f570481d --- /dev/null +++ b/netatalk-current_vol.patch @@ -0,0 +1,10 @@ +--- a/etc/afpd/volume.h ++++ b/etc/afpd/volume.h +@@ -36,6 +36,6 @@ + /* netatalk functions */ + extern void close_all_vol (void); + +-struct vol *current_vol; /* last volume from getvolbyvid() */ ++extern struct vol *current_vol; /* last volume from getvolbyvid() */ + + #endif diff --git a/netatalk-ddp.install b/netatalk-ddp.install new file mode 100644 index 000000000000..1f9e26cd7d3a --- /dev/null +++ b/netatalk-ddp.install @@ -0,0 +1,15 @@ +post_install() { + post_upgrade +} +post_upgrade() { + if [ "`grep -E '(cnid|atalkd|afpd)' /etc/rc.conf`" ];then + echo '>>> Detected old netatalk daemon entries in'; + echo '>>> /etc/rc.conf, please replace these with'; + echo '>>> "netatalk" before restarting!'; + echo '>>>'; + if [ -f /etc/avahi/services/adisk.service ] || + [ -f /etc/avahi/services/afpd.service ];then + echo '>>> Detected old netatalk service files in'; + echo '>>> /etc/avahi/services, please delete these'; + echo '>>> before restarting!';fi +} diff --git a/netatalk-invalid_dircache_entries.patch b/netatalk-invalid_dircache_entries.patch new file mode 100644 index 000000000000..8652b68ca154 --- /dev/null +++ b/netatalk-invalid_dircache_entries.patch @@ -0,0 +1,22 @@ +From 32df6e155ccfc83216321925273c3e75e631ebe6 Mon Sep 17 00:00:00 2001 +From: Andrew Bauer <zonexpertconsulting@outlook.com> +Date: Wed, 22 Jan 2020 09:59:47 -0600 +Subject: [PATCH] fix ftbs multiple def of invalid_dircache_entries + +--- + etc/afpd/directory.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/etc/afpd/directory.h b/etc/afpd/directory.h +index eb89c606..81bfa9cb 100644 +--- a/etc/afpd/directory.h ++++ b/etc/afpd/directory.h +@@ -91,7 +91,7 @@ struct maccess { + #define AR_UWRITE (1<<2) + #define AR_UOWN (1<<7) + +-q_t *invalid_dircache_entries; ++extern q_t *invalid_dircache_entries; + + typedef int (*dir_loop)(struct dirent *, char *, void *); + diff --git a/netatalk-papd_print_cups.patch b/netatalk-papd_print_cups.patch new file mode 100644 index 000000000000..49915b2ed5cf --- /dev/null +++ b/netatalk-papd_print_cups.patch @@ -0,0 +1,123 @@ +$NetBSD: patch-etc_papd_print_cups.c,v 1.3 2019/11/23 17:55:02 hauke Exp $ + +Deprecated functions: Remove obsolete define, and disable compiler +errors for deprecation warnings, as seen in the darktable print code. + +Accessors: Cups has abstracted away access to ipp_t fields, use +accessor functions. + +--- etc/papd/print_cups.c.orig 2017-07-09 11:03:31.000000000 +0000 ++++ etc/papd/print_cups.c +@@ -39,11 +39,11 @@ + + #ifdef HAVE_CUPS + +-/* enable pre-1.6 CUPS API for now */ +-#define _PPD_DEPRECATED +- +-/* expose structs that are private post-1.5 CUPS */ +-#define _IPP_PRIVATE_STRUCTURES 1 ++/* ++ * Do not error out on deprecation messages ++ * -- darktable does this in their "src/common/cups_print.c" ++ */ ++#pragma GCC diagnostic ignored "-Wdeprecated-declarations" + + #include <cups/ipp.h> + #include <cups/cups.h> +@@ -61,6 +61,11 @@ + #define MAXCHOOSERLEN 31 + #define HTTP_MAX_URI 1024 + ++/* Deal with post-1.7 deprecated httpConnect() */ ++#define httpConnect(host, port) httpConnect2(host, port, NULL, AF_UNSPEC, HTTP_ENCRYPTION_IF_REQUESTED, 1, 1000, NULL) ++ ++/* XXX Also: cupsGetPPD() */ ++ + static const char* cups_status_msg[] = { + "status: busy; info: \"%s\" is rejecting jobs; ", + "status: idle; info: \"%s\" is stopped, accepting jobs ;", +@@ -136,12 +141,8 @@ cups_printername_ok(char *name) + * requested-attributes + * printer-uri + */ +- +- request = ippNew(); +- +- request->request.op.operation_id = IPP_GET_PRINTER_ATTRIBUTES; +- request->request.op.request_id = 1; +- ++ request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES); ++ + language = cupsLangDefault(); + + ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET, +@@ -172,10 +173,11 @@ cups_printername_ok(char *name) + + httpClose(http); + +- if (response->request.status.status_code >= IPP_OK_CONFLICT) ++ if ( cupsLastError() >= IPP_OK_CONFLICT) + { + LOG(log_error, logtype_papd, "Unable to get printer status for %s - %s", name, +- ippErrorString(response->request.status.status_code)); ++ ippErrorString(cupsLastError())); ++ + ippDelete(response); + return (0); + } +@@ -249,10 +251,7 @@ cups_get_printer_status (struct printer + * printer-uri + */ + +- request = ippNew(); +- +- request->request.op.operation_id = IPP_GET_PRINTER_ATTRIBUTES; +- request->request.op.request_id = 1; ++ request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES); + + language = cupsLangDefault(); + +@@ -282,10 +281,11 @@ cups_get_printer_status (struct printer + return (0); + } + +- if (response->request.status.status_code >= IPP_OK_CONFLICT) ++ if (cupsLastError() >= IPP_OK_CONFLICT) + { +- LOG(log_error, logtype_papd, "Unable to get printer status for %s - %s", pr->p_printer, +- ippErrorString(response->request.status.status_code)); ++ LOG(log_error, logtype_papd, "Unable to get printer status for %s - %s", pr->p_printer, ++ ippErrorString(cupsLastError())); ++ + ippDelete(response); + httpClose(http); + return (0); +@@ -299,9 +299,9 @@ cups_get_printer_status (struct printer + + if ((attr = ippFindAttribute(response, "printer-state", IPP_TAG_ENUM)) != NULL) + { +- if (attr->values[0].integer == IPP_PRINTER_STOPPED) ++ if (ippGetInteger(attr, 0) == IPP_PRINTER_STOPPED) + status = 1; +- else if (attr->values[0].integer == IPP_NOT_ACCEPTING) ++ else if (ippGetInteger(attr,0) == IPP_NOT_ACCEPTING) + status = 0; + else + status = 2; +@@ -309,14 +309,14 @@ cups_get_printer_status (struct printer + + if ((attr = ippFindAttribute(response, "printer-is-accepting-jobs", IPP_TAG_BOOLEAN)) != NULL) + { +- if ( attr->values[0].integer == 0 ) ++ if ( ippGetInteger(attr, 0) == 0 ) + status = 0; + } + + snprintf ( pr->p_status, 255, cups_status_msg[status], pr->p_printer ); + + if ((attr = ippFindAttribute(response, "printer-state-message", IPP_TAG_TEXT)) != NULL) +- strncat ( pr->p_status, attr->values[0].string.text, 255-strlen(pr->p_status)); ++ strncat ( pr->p_status, ippGetString(attr, 0, NULL), 255-strlen(pr->p_status)); + + ippDelete(response); diff --git a/netatalk-uams_dhx_pam.patch b/netatalk-uams_dhx_pam.patch new file mode 100644 index 000000000000..e2090cf3192e --- /dev/null +++ b/netatalk-uams_dhx_pam.patch @@ -0,0 +1,60 @@ +$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 --git a/netatalk-uams_dhx_passwd.patch b/netatalk-uams_dhx_passwd.patch new file mode 100644 index 000000000000..3778054d2e69 --- /dev/null +++ b/netatalk-uams_dhx_passwd.patch @@ -0,0 +1,42 @@ +$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 --git a/netatalk-uams_randnum.patch b/netatalk-uams_randnum.patch new file mode 100644 index 000000000000..f1e3e1efc612 --- /dev/null +++ b/netatalk-uams_randnum.patch @@ -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) |