diff options
author | 2010-11-16 18:59:00 +0000 | |
---|---|---|
committer | 2010-11-16 18:59:00 +0000 | |
commit | fd9483d7fba10a36a06c98f09d83c62056d26679 (patch) | |
tree | b3f6d28b815acac49419726a026e2e8b586d65e2 | |
parent | periodically measure temperature and redo LC calibration if temperature (diff) | |
download | wireguard-openbsd-fd9483d7fba10a36a06c98f09d83c62056d26679.tar.xz wireguard-openbsd-fd9483d7fba10a36a06c98f09d83c62056d26679.zip |
Fix error message when ld.so ends up loading a different than expected
library, but other library needs the one loaded. mostly ok kurt@
-rw-r--r-- | libexec/ld.so/library.c | 4 | ||||
-rw-r--r-- | libexec/ld.so/library_mquery.c | 5 | ||||
-rw-r--r-- | libexec/ld.so/library_subr.c | 10 |
3 files changed, 8 insertions, 11 deletions
diff --git a/libexec/ld.so/library.c b/libexec/ld.so/library.c index d8c3ba8c1ea..87dc3fde2f5 100644 --- a/libexec/ld.so/library.c +++ b/libexec/ld.so/library.c @@ -1,4 +1,4 @@ -/* $OpenBSD: library.c,v 1.59 2010/10/25 20:34:44 kurt Exp $ */ +/* $OpenBSD: library.c,v 1.60 2010/11/16 18:59:00 drahn Exp $ */ /* * Copyright (c) 2002 Dale Rahn @@ -38,6 +38,7 @@ #include "syscall.h" #include "archdep.h" #include "resolve.h" +#include "sod.h" #define PFLAGS(X) ((((X) & PF_R) ? PROT_READ : 0) | \ (((X) & PF_W) ? PROT_WRITE : 0) | \ @@ -242,6 +243,7 @@ _dl_tryload_shlib(const char *libname, int type, int flags) object->dev = sb.st_dev; object->inode = sb.st_ino; object->obj_flags |= flags; + _dl_build_sod(object->load_name, &object->sod); } else { /* XXX not possible. object cannot come back NULL */ _dl_munmap((void *)libaddr, maxva - minva); diff --git a/libexec/ld.so/library_mquery.c b/libexec/ld.so/library_mquery.c index 13160933689..fb5366b9e4e 100644 --- a/libexec/ld.so/library_mquery.c +++ b/libexec/ld.so/library_mquery.c @@ -1,4 +1,4 @@ -/* $OpenBSD: library_mquery.c,v 1.37 2010/10/25 20:34:44 kurt Exp $ */ +/* $OpenBSD: library_mquery.c,v 1.38 2010/11/16 18:59:00 drahn Exp $ */ /* * Copyright (c) 2002 Dale Rahn @@ -38,6 +38,7 @@ #include "syscall.h" #include "archdep.h" #include "resolve.h" +#include "sod.h" #define PFLAGS(X) ((((X) & PF_R) ? PROT_READ : 0) | \ (((X) & PF_W) ? PROT_WRITE : 0) | \ @@ -280,7 +281,7 @@ retry: object->dev = sb.st_dev; object->inode = sb.st_ino; object->obj_flags |= flags; - + _dl_build_sod(object->load_name, &object->sod); } else { /* XXX no point. object is never returned NULL */ _dl_load_list_free(lowld); diff --git a/libexec/ld.so/library_subr.c b/libexec/ld.so/library_subr.c index 29015e6e738..8b9723db6be 100644 --- a/libexec/ld.so/library_subr.c +++ b/libexec/ld.so/library_subr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: library_subr.c,v 1.32 2010/10/25 20:34:44 kurt Exp $ */ +/* $OpenBSD: library_subr.c,v 1.33 2010/11/16 18:59:00 drahn Exp $ */ /* * Copyright (c) 2002 Dale Rahn @@ -439,14 +439,8 @@ done: sod.sod_name, sod.sod_major, req_sod.sod_minor, sod.sod_minor); object = _dl_tryload_shlib(hint, type, flags); - if (object) { - object->sod = req_sod; - } else { - _dl_free((char *)sod.sod_name); - } - } else { - _dl_free((char *)sod.sod_name); } + _dl_free((char *)sod.sod_name); return(object); } |