Date: Wed, 16 Sep 1998 00:03:57 +0200 (CEST) From: Stefan Esser <se@dialup124.zpr.uni-koeln.de> To: FreeBSD-gnats-submit@FreeBSD.ORG Subject: bin/7941: FIX: keyserv with DES not ready for ELF Message-ID: <199809152203.AAA01952@dialup124.zpr.Uni-Koeln.DE>
next in thread | raw e-mail | index | archive | help
>Number: 7941
>Category: bin
>Synopsis: FIX: keyserv with DES not ready for ELF
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Tue Sep 15 16:00:01 PDT 1998
>Last-Modified:
>Originator: Stefan Esser
>Organization:
>Release: FreeBSD 3.0-CURRENT i386
>Environment:
FreeBSD 3.0-current (ELF)
>Description:
There are no compilation errors if you build "keyserv" on an ELF system,
but because of differences in the library names and symbol names, the
resulting binary can't attach _des_crypt() from libdes.so and falls back
to ARCFOUR.
>How-To-Repeat:
On a system with DES sources and ELF do:
$ keyserv -v
Watch the output of that command, it indicates that no DES support is
available.
>Fix:
The following patch should not cause any trouble under -stable
or under -current/aout, but fixes the ELF case.
I was not sure, whether dlopen() should be called with "libdes.so"
or with "libdes.so.3". I chose the latter ...
Index: Makefile
===================================================================
RCS file: /usr/cvs/src/usr.sbin/keyserv/Makefile,v
retrieving revision 1.3
diff -C2 -r1.3 Makefile
*** Makefile 1998/05/09 13:32:37 1.3
--- Makefile 1998/09/15 21:51:46
***************
*** 7,10 ****
--- 7,13 ----
CFLAGS+= -DKEYSERV_RANDOM -DBROKEN_DES -I.
+ .if $(OBJFORMAT) == elf
+ CFLAGS+= -DOBJFORMAT_ELF
+ .endif
DPADD= ${LIBMP} ${LIBRPCSVC}
Index: crypt_server.c
===================================================================
RCS file: /usr/cvs/src/usr.sbin/keyserv/crypt_server.c,v
retrieving revision 1.3
diff -C2 -r1.3 crypt_server.c
*** crypt_server.c 1997/09/23 06:36:26 1.3
--- crypt_server.c 1998/09/15 21:50:35
***************
*** 172,176 ****
--- 172,180 ----
#ifndef LIBDES
+ #ifdef OBJFORMAT_ELF
+ #define LIBDES "libdes.so.3"
+ #else
#define LIBDES "libdes.so.3."
+ #endif /* OBJFORMAT_ELF */
#endif
***************
*** 186,189 ****
--- 190,196 ----
if (libpath == NULL) {
+ #ifdef OBJFORMAT_ELF
+ snprintf(dlpath, sizeof(dlpath), "%s/%s", _PATH_USRLIB, LIBDES);
+ #else
len = strlen(LIBDES);
if ((dird = opendir(_PATH_USRLIB)) == NULL)
***************
*** 204,212 ****
--- 211,224 ----
closedir(dird);
+ #endif /* OBJFORMAT_ELF */
} else
snprintf(dlpath, sizeof(dlpath), "%s", libpath);
if (dlpath != NULL && (dlhandle = dlopen(dlpath, 0444)) != NULL)
+ #ifdef OBJFORMAT_ELF
+ _my_crypt = (int (*)())dlsym(dlhandle, "_des_crypt");
+ #else
_my_crypt = (int (*)())dlsym(dlhandle, "__des_crypt");
+ #endif /* OBJFORMAT_ELF */
if (_my_crypt == NULL) {
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199809152203.AAA01952>
