Control: tags -1 patch On Mon, 10 Dec 2018 21:16:50 +0200 Adrian Bunk <b...@debian.org> wrote: > Source: ppp > Version: 2.4.7-2+4 > Severity: serious > Tags: ftbfs > > https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/pp p.html > > ... > pppcrypt.c: In function 'DesSetkey': > pppcrypt.c:122:2: warning: implicit declaration of function 'setkey'; did you mean 'DesSetkey'? [-Wimplicit-function-declaration] > setkey((const char *)crypt_key); > ^~~~~~ > DesSetkey > pppcrypt.c: In function 'DesEncrypt': > pppcrypt.c:137:2: warning: implicit declaration of function 'encrypt'; did you mean 'crypt'? [-Wimplicit-function-declaration] > encrypt((char *)des_input, 0); > ^~~~~~~ > ... > cc -Wl,-z,relro -Wl,-z,now -Wl,-E -o pppd main.o magic.o fsm.o lcp.o ipcp.o upap.o chap-new.o ccp.o ecp.o auth.o options.o demand.o utils.o sys-linux.o ipxcp.o tty.o eap.o chap-md5.o session.o chap_ms.o eap- tls.o pppcrypt.o multilink.o tdb.o spinlock.o ipv6cp.o eui64.o cbcp.o -lcrypto -lssl -lcrypt -lutil -lpam -ldl -ldl -lpcap \ > -Wl,-soname,pppd.so.2.4.7 > /usr/bin/ld: pppcrypt.o: in function `DesSetkey': > ./pppd/pppcrypt.c:122: undefined reference to `setkey' > /usr/bin/ld: pppcrypt.o: in function `DesEncrypt': > ./pppd/pppcrypt.c:137: undefined reference to `encrypt' > /usr/bin/ld: pppcrypt.o: in function `DesDecrypt': > ./pppd/pppcrypt.c:153: undefined reference to `encrypt' > collect2: error: ld returned 1 exit status > make[3]: *** [Makefile:227: pppd] Error 1
Dear Maintainer, This was fixed upstream in Github: https://github.com/paulusmack/ppp/commit/3c7b86229f7bd2600d74db14b1fe5b3896be3875 A backport (with a minor refresh for fuzz) is inlined below. -- Kind regards, Luca Boccassi Author: jskar...@redhat.com Description: Use openssl for the DES instead of the libcrypt / glibc It seems the latest glibc (in Fedora glibc-2.27.9000-12.fc29) dropped libcrypt. The libxcrypt standalone package can be used instead, but it dropped the old setkey/encrypt API which ppp uses for DES. There is support for using openssl in pppcrypt.c, but it contains typos preventing it from compiling and seems to be written for an ancient openssl version. This updates the code to use current openssl. [pau...@ozlabs.org - wrote the commit description, fixed comment in Makefile.linux.] Origin: https://github.com/paulusmack/ppp/pull/96 Applied-Upstream: https://github.com/paulusmack/ppp/commit/3c7b86229f7bd2600d74db14b1fe5b3896be3875 --- a/pppd/Makefile.linux +++ b/pppd/Makefile.linux @@ -35,10 +35,10 @@ endif COPTS = -O2 -pipe -Wall -g LIBS = -lcrypto -# Uncomment the next 2 lines to include support for Microsoft's +# Uncomment the next line to include support for Microsoft's # MS-CHAP authentication protocol. Also, edit plugins/radius/Makefile.linux. CHAPMS=y -USE_CRYPT=y +#USE_CRYPT=y # Don't use MSLANMAN unless you really know what you're doing. #MSLANMAN=y # Uncomment the next line to include support for MPPE. CHAPMS (above) must @@ -142,7 +142,8 @@ endif ifdef NEEDDES ifndef USE_CRYPT -LIBS += -ldes $(LIBS) +CFLAGS += -I/usr/include/openssl +LIBS += -lcrypto else CFLAGS += -DUSE_CRYPT=1 endif --- a/pppd/pppcrypt.c +++ b/pppd/pppcrypt.c @@ -64,7 +64,7 @@ u_char *des_key; /* OUT 64 bit DES key w des_key[7] = Get7Bits(key, 49); #ifndef USE_CRYPT - des_set_odd_parity((des_cblock *)des_key); + DES_set_odd_parity((DES_cblock *)des_key); #endif } @@ -158,25 +158,25 @@ u_char *clear; /* OUT 8 octets */ } #else /* USE_CRYPT */ -static des_key_schedule key_schedule; +static DES_key_schedule key_schedule; bool DesSetkey(key) u_char *key; { - des_cblock des_key; + DES_cblock des_key; MakeKey(key, des_key); - des_set_key(&des_key, key_schedule); + DES_set_key(&des_key, &key_schedule); return (1); } bool -DesEncrypt(clear, key, cipher) +DesEncrypt(clear, cipher) u_char *clear; /* IN 8 octets */ u_char *cipher; /* OUT 8 octets */ { - des_ecb_encrypt((des_cblock *)clear, (des_cblock *)cipher, - key_schedule, 1); + DES_ecb_encrypt((DES_cblock *)clear, (DES_cblock *)cipher, + &key_schedule, 1); return (1); } @@ -185,8 +185,8 @@ DesDecrypt(cipher, clear) u_char *cipher; /* IN 8 octets */ u_char *clear; /* OUT 8 octets */ { - des_ecb_encrypt((des_cblock *)cipher, (des_cblock *)clear, - key_schedule, 0); + DES_ecb_encrypt((DES_cblock *)cipher, (DES_cblock *)clear, + &key_schedule, 0); return (1); }
signature.asc
Description: This is a digitally signed message part