[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[SCM] GNU Libtool branch, master, updated. v2.2.6-159-ge91f7b9
From: |
Peter O'Gorman |
Subject: |
[SCM] GNU Libtool branch, master, updated. v2.2.6-159-ge91f7b9 |
Date: |
Mon, 16 Nov 2009 03:21:07 +0000 |
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Libtool".
The branch, master has been updated
via e91f7b960032074a55fc91273c1917e3082b5338 (commit)
via 3580cddcea7eec5c07cf69e8adbe14ccf94dccc1 (commit)
from c242ea638d7713fd0d1406a3b6880069bce11e93 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit e91f7b960032074a55fc91273c1917e3082b5338
Author: Bob Friesenhahn <address@hidden>
Date: Sat Nov 14 13:52:24 2009 -0600
Don't load module.la from current directory by default.
* libltdl/ltdl.c (try_dlopen): Do not attempt to load an
unqualified module.la file from the current directory (by
default) since doing so is insecure and is not compliant with
the documentation.
* tests/testsuite.at: Qualify access to module.la file in
current directory so that test passes.
commit 3580cddcea7eec5c07cf69e8adbe14ccf94dccc1
Author: Peter O'Gorman <address@hidden>
Date: Sat Nov 14 13:47:10 2009 -0600
Only use preopen loader to load preopened archives
* libltdl/ltdl.c: Limit checking of .a to preopen loader.
* tests/lt_dlopen_a.at: Add test.
* Makefile.am: Add test.
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 17 +++++++++
Makefile.am | 1 +
libltdl/ltdl.c | 5 ++-
tests/lt_dlopen_a.at | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/testsuite.at | 4 +-
5 files changed, 120 insertions(+), 4 deletions(-)
create mode 100644 tests/lt_dlopen_a.at
diff --git a/ChangeLog b/ChangeLog
index 9c20fde..6dc2298 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+2009-11-14 Bob Friesenhahn <address@hidden>
+
+ Don't load module.la from current directory by default.
+ * libltdl/ltdl.c (try_dlopen): Do not attempt to load an
+ unqualified module.la file from the current directory (by
+ default) since doing so is insecure and is not compliant with
+ the documentation.
+ * tests/testsuite.at: Qualify access to module.la file in
+ current directory so that test passes.
+
+2009-11-14 Peter O'Gorman <address@hidden>
+
+ Only use preopen loader to load preopened archives
+ * libltdl/ltdl.c: Limit checking of .a to preopen loader.
+ * tests/lt_dlopen_a.at: Add test.
+ * Makefile.am: Add test.
+
2009-11-14 Ralf Wildenhues <address@hidden>
Recognize `pgfortran' as Portland compiler.
diff --git a/Makefile.am b/Makefile.am
index d2033c5..2fe2f88 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -481,6 +481,7 @@ TESTSUITE_AT = tests/testsuite.at \
tests/lt_dlexit.at \
tests/lt_dladvise.at \
tests/lt_dlopen.at \
+ tests/lt_dlopen_a.at \
tests/lt_dlopenext.at \
tests/ltdl-api.at \
tests/need_lib_prefix.at \
diff --git a/libltdl/ltdl.c b/libltdl/ltdl.c
index a622357..24ee13f 100644
--- a/libltdl/ltdl.c
+++ b/libltdl/ltdl.c
@@ -529,7 +529,8 @@ find_module (lt_dlhandle *handle, const char *dir, const
char *libdir,
/* Try to open the old library first; if it was dlpreopened,
we want the preopened version of it, even if a dlopenable
module is available. */
- if (old_name && tryall_dlopen (handle, old_name, advise, 0) == 0)
+ if (old_name && tryall_dlopen (handle, old_name,
+ advise, lt_dlloader_find ("lt_preopen") ) == 0)
{
return 0;
}
@@ -1345,7 +1346,7 @@ try_dlopen (lt_dlhandle *phandle, const char *filename,
const char *ext,
}
#endif
}
- if (!file)
+ else
{
file = fopen (attempt, LT_READTEXT_MODE);
}
diff --git a/tests/lt_dlopen_a.at b/tests/lt_dlopen_a.at
new file mode 100644
index 0000000..4844d06
--- /dev/null
+++ b/tests/lt_dlopen_a.at
@@ -0,0 +1,97 @@
+# lt_dlopen_a.at -- test libltdl functionality -*- Autotest -*-
+#
+# Copyright (C) 2009 Free Software Foundation, Inc.
+# This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING. If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html,
+# or obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+####
+
+AT_SETUP([lt_dlopen archive])
+AT_KEYWORDS([libltdl lt_dlopen_a])
+
+AT_DATA([main.c],
+[[#include <ltdl.h>
+#include <stdio.h>
+
+/* This dlopen() in the main executable should override any dlopen()s in
+ shared libraries etc.
+
+ If that is not the case (or the platform does not use dlopen()) then this
+ test should exit 77, causing the test to SKIP.
+*/
+static int retcde = 77;
+
+void * dlopen(const char *path, int mode) {
+ if (!(strcmp(path,"plugin.a") && strcmp(path,"plugin.lib")))
+ {
+ fprintf(stderr,"Tried to open archive %s\n",path);
+ retcde = 1;
+ }
+ else
+ {
+ fprintf(stderr,"Opening ... %s\n", path);
+ if (retcde == 77) retcde = 0;
+ }
+ return NULL;
+}
+
+int
+main (int argc, char* argv[])
+{
+ int err = 0;
+ lt_dlhandle plugin_handle;
+
+ lt_dlinit ();
+ plugin_handle = lt_dlopenext (argv[1]);
+ lt_dlexit ();
+ return retcde;
+}
+]])
+
+AT_DATA([plugin.c],
+[[
+int i = 1;
+]])
+
+: ${LTDLINCL="-I$abs_top_srcdir/libltdl"}
+: ${LIBLTDL="$abs_builddir/../libltdl/libltdlc.la"}
+
+CPPFLAGS="$LTDLINCL $CPPFLAGS"
+inst=`pwd`/inst
+libdir=$inst/lib
+bindir=$inst/bin
+
+AT_CHECK([$CC $CPPFLAGS $CFLAGS -c main.c || exit 77],[],[ignore],[ignore])
+AT_CHECK([$LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -c plugin.c || exit
77],
+ [], [ignore], [ignore])
+AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o plugin.la -rpath ]dnl
+ [$libdir -module -no-undefined -avoid-version plugin.lo || exit 77],
+ [], [ignore], [ignore])
+
+AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o main$EXEEXT ]dnl
+ [main.$OBJEXT -dlopen plugin.la $LIBLTDL || exit 77],
+ [], [ignore], [ignore])
+
+mkdir -p $libdir
+mkdir -p $bindir
+
+AT_CHECK([$LIBTOOL --mode=install cp plugin.la $libdir],[], [ignore], [ignore])
+AT_CHECK([$LIBTOOL --mode=install cp main$EXEEXT $bindir],[], [ignore],
[ignore])
+AT_CHECK([test -f $libdir/plugin.a || exit 77])
+LT_AT_EXEC_CHECK([$bindir/main], [], [ignore], [ignore],[$libdir/plugin.la])
+
+AT_CLEANUP
diff --git a/tests/testsuite.at b/tests/testsuite.at
index e9226ee..34f7f21 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -336,9 +336,9 @@ main ()
return 1;
}
- module = lt_dlopen("module.la");
+ module = lt_dlopen("./module.la");
if (!module) {
- fprintf (stderr, "error dlopening module.la: %s\n", lt_dlerror());
+ fprintf (stderr, "error dlopening ./module.la: %s\n", lt_dlerror());
goto finish;
}
hooks/post-receive
--
GNU Libtool
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [SCM] GNU Libtool branch, master, updated. v2.2.6-159-ge91f7b9,
Peter O'Gorman <=