Subject: lib/3522: undefined symbols in libwrap
To: None <gnats-bugs@gnats.netbsd.org>
From: Jaromir Dolecek <dolecek@ics.muni.cz>
List: netbsd-bugs
Date: 04/22/1997 10:06:43
>Number: 3522
>Category: lib
>Synopsis: undefined symbols in libwrap
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: lib-bug-people (Library Bug People)
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Apr 22 01:20:02 1997
>Last-Modified:
>Originator: Jaromir Dolecek
>Organization:
ICS MU, Brno, Czech republic
>Release: 1.2
>Environment:
System: NetBSD saruman.ics.muni.cz 1.2 NetBSD 1.2 (SARUMAN_12) #21: Mon Mar 24 15:47:33 MET 1997 dolecek@saruman.ics.muni.cz:/home/dolecek/N12/usr/src/sys/arch/i386/compile/SARUMAN_12 i386
Architecture: i386
>Description:
I've got liwrap sources from -current and compiled it
happily on i386/1.2 machine. I've also got inetd and
recompiled it to use libwrap. The same for sendmail. All
works okay.
My problem:
When I compiled ssh to use libwrap, scp complains about missing
"_deny_severity" in libwrap:
/usr/libexec/ld.so: Undefined symbol "_deny_severity" in
scp:/usr/lib/libwrap.so.0.0
I've played w/ it a bit and w/ help of my fried found out
symbol deny_severity is used in libwrap, but not really
declared anywhere:
saruman: /home/dolecek/tmp/libwrap ###
>grep deny_severity *.[ch]
options.c: syslog(deny_severity, "twist %s to %s",
eval_client(request), value);
options.c: allow_severity = deny_severity = level ?
refuse.c: syslog(deny_severity, "refused connect from %s",
eval_client(request));
tcpd.h:extern int deny_severity;
When shared lib is build, this sybmol gets stripped somehow
from library.
So - there are a few variables, which are used w/o being
declared; they are defined as extern in tcpd.h but not
defined anywhere else. It's case of deny_severity and
allow_severity at least.
I'm sorry if these two are declared somewhere else (libc ?).
>How-To-Repeat:
Compile ssh w/ TCPWRAPPERS; wander why scp isn't able to run
>Fix:
It's a bit hard as libwrap isn't kinda "static" lib, but
is imported from elsewhere; it should be nice to make
libwrap2netbsd to "correct" it somehow. I'm adding the
patch of options.c just to make see kind of what should be
done; it's really NOT rocket science ;-)
*** options.c.orig Fri Jan 24 13:14:03 1997
--- options.c Tue Apr 22 09:45:59 1997
***************
*** 86,91 ****
--- 86,95 ----
static void deny_option(); /* execute "deny" option */
static void banners_option(); /* execute "banners path" option */
+ /* necessary variables */
+ int allow_severity; /* for connection logging */
+ int deny_severity; /* for connection logging */
+
/* Structure of the options table. */
struct option {
>Audit-Trail:
>Unformatted: