]> git.ipfire.org Git - thirdparty/glibc.git/blame - elf/lateglobal.c
Fix bad pointer / leak in regex code
[thirdparty/glibc.git] / elf / lateglobal.c
CommitLineData
d785c366
UD
1#include <dlfcn.h>
2#include <mcheck.h>
3#include <stdio.h>
4#include <stdlib.h>
5
6int
7main (void)
8{
9 void *h[2];
10 int fail;
11 int (*fp) (void);
12
13 mtrace ();
14
15 h[0] = dlopen ("ltglobmod1.so", RTLD_LAZY);
b33ed432 16 if (h[0] == NULL)
d785c366
UD
17 {
18 printf ("%s: cannot open %s: %s",
19 __FUNCTION__, "ltglobmod1.so", dlerror ());
20 exit (EXIT_FAILURE);
21 }
22 h[1] = dlopen ("ltglobmod2.so", RTLD_LAZY);
b33ed432 23 if (h[1] == NULL)
d785c366
UD
24 {
25 printf ("%s: cannot open %s: %s",
26 __FUNCTION__, "ltglobmod2.so", dlerror ());
27 exit (EXIT_FAILURE);
28 }
29
30 puts ("loaded \"ltglobmod1.so\" without RTLD_GLOBAL");
31
32 fp = dlsym (h[1], "foo");
33 if (fp == NULL)
34 {
35 printf ("cannot get address of `foo': %s", dlerror ());
36 exit (EXIT_FAILURE);
37 }
38
39 fail = fp ();
40
41 puts ("back in main");
42
43 dlclose (h[1]);
44 dlclose (h[0]);
45
46 return fail;
47}