Fix a tiny bug in shlib support of ldd(1); if dlopen(lib, RTLD_TRACE)

returns, exit gracefully with 0.

This fixes the behavior you see when you specify libc.so.  It occurs
because ldd(1) itself is linked with libc.so.

	$ ldd /usr/lib/libc.so
	/usr/lib/libc.so:
	ldd: /usr/lib/libc.so: (null)
	/usr/lib/libc.so: exit status 1

Reviewed by:	silence of audit@
This commit is contained in:
Akinori MUSHA 2002-05-17 17:06:56 +00:00
parent 4cfccbc445
commit 005ba515dc

View File

@ -220,12 +220,13 @@ main(int argc, char *argv[])
}
break;
case 0:
if (is_shlib == 0) {
if (is_shlib) {
if (dlopen(*argv, RTLD_TRACE))
_exit(0); /* libc.so */
warnx("%s: %s", *argv, dlerror());
} else {
execl(*argv, *argv, (char *)NULL);
warn("%s", *argv);
} else {
dlopen(*argv, RTLD_TRACE);
warnx("%s: %s", *argv, dlerror());
}
_exit(1);
}