about summary refs log tree commit diff
path: root/elf/tst-leaks1.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2006-03-15 19:26:13 +0000
committerUlrich Drepper <drepper@redhat.com>2006-03-15 19:26:13 +0000
commit2e0fc40cc49e8168f99b252dba4746c280b7a1d7 (patch)
tree652dcb36fee578c7f69c2d0c3029a70825e34839 /elf/tst-leaks1.c
parentfacac085dc7f5927a9f52d8e9abf84acf5c1b8d3 (diff)
downloadglibc-2e0fc40cc49e8168f99b252dba4746c280b7a1d7.tar.gz
glibc-2e0fc40cc49e8168f99b252dba4746c280b7a1d7.tar.xz
glibc-2e0fc40cc49e8168f99b252dba4746c280b7a1d7.zip
[BZ #2451]
2006-03-13  Jakub Jelinek  <jakub@redhat.com>
	[BZ #2451]
	* elf/dl-load.c (open_verify): Add free_name argument, if true, free
	name before calling lose.
	(open_path): Adjust caller.
	(_dl_map_object): Adjust callers.  Free name_copy before calling
	_dl_signal_error.
	* elf/Makefile: Add rules to build and run tst-leaks1.
	* elf/tst-leaks1.c: New test.
Diffstat (limited to 'elf/tst-leaks1.c')
-rw-r--r--elf/tst-leaks1.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/elf/tst-leaks1.c b/elf/tst-leaks1.c
new file mode 100644
index 0000000000..c9db5e0537
--- /dev/null
+++ b/elf/tst-leaks1.c
@@ -0,0 +1,24 @@
+#include <dlfcn.h>
+#include <mcheck.h>
+#include <stdlib.h>
+
+int
+main (void)
+{
+  mtrace ();
+
+  int ret = 0;
+  for (int i = 0; i < 10; i++)
+    {
+      void *h = dlopen (i < 5 ? "./tst-leaks1.c"
+			      : "$ORIGIN/tst-leaks1.o", RTLD_LAZY);
+      if (h != NULL)
+	{
+	  puts ("dlopen unexpectedly succeeded");
+	  ret = 1;
+	  dlclose (h);
+	}
+    }
+
+  return ret;
+}