Date: 28 Mar 1997 15:24:28 -0000 From: proff@suburbia.net To: FreeBSD-gnats-submit@freebsd.org Subject: bin/3131: <Synopsis of the problem (one line)> dlsym() does not set error on error, breaks dlerror() Message-ID: <19970328152428.6278.qmail@suburbia.net> Resent-Message-ID: <199703281530.HAA15430@freefall.freebsd.org>
index | next in thread | raw e-mail
>Number: 3131
>Category: bin
>Synopsis: dlsym() does not set error on error, breaks dlerror()
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: freebsd-bugs
>State: open
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Fri Mar 28 07:30:01 PST 1997
>Last-Modified:
>Originator: Julian Assange
>Organization:
>Release: FreeBSD 2.2-GAMMA i386
>Environment:
>Description:
dlerror() is meant to return the last error from dlopen or dlsym.
dlsym() doesn't actually set any error message when an error
happens. and thus dlerror() will lie
>How-To-Repeat:
>Fix:
--- src/gnu/usr.bin/ld/rtld/rtld.c.orig Sun Feb 2 04:17:09 1997
+++ src/gnu/usr.bin/ld/rtld/rtld.c Sat Mar 29 01:19:30 1997
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: rtld.c,v 1.46 1997/02/22 15:46:48 peter Exp $
*/
#include <sys/param.h>
@@ -1912,9 +1912,11 @@
src_map = smp;
np = lookup(sym, &src_map, 1);
- if (np == NULL)
- return NULL;
-
+ if (np == NULL) {
+ generror ("dlsym failed for \"%s\" : %s",
+ smp->som_path, sym);
+ return NULL;
+ }
/* Fixup jmpslot so future calls transfer directly to target */
addr = np->nz_value;
if (src_map)
>Audit-Trail:
>Unformatted:
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19970328152428.6278.qmail>
