diff options
author | Carmelo Amoroso <carmelo.amoroso@st.com> | 2008-01-22 15:37:32 +0000 |
---|---|---|
committer | Carmelo Amoroso <carmelo.amoroso@st.com> | 2008-01-22 15:37:32 +0000 |
commit | 6c61a9fdfbb4c9c762fd4d0c6179dd77e0f6660f (patch) | |
tree | 4e9a8e940b33910f26c26a20d92b54b67f7936c5 /test/dlopen/dladdr.c | |
parent | eff32c83f16b3b99398122bc57812cdb4dd8507f (diff) |
Test case to exploit dladdr bug
Signed-off-by: Filippo Arcidiacono <filippo.arcidiacono@st.com>
Diffstat (limited to 'test/dlopen/dladdr.c')
-rwxr-xr-x | test/dlopen/dladdr.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/test/dlopen/dladdr.c b/test/dlopen/dladdr.c new file mode 100755 index 000000000..47ecea1da --- /dev/null +++ b/test/dlopen/dladdr.c @@ -0,0 +1,25 @@ +#include <dlfcn.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+int main(int argc, char **argv)
+{
+ Dl_info info;
+ int res = 0;
+
+ memset(&info, '\0', sizeof(Dl_info));
+ res = dladdr((void *)1, &info);
+ if (res != 0) {
+ fprintf(stderr, "dladdr() should fail\n");
+ fprintf(stderr, "dli_fname = %s\n", info.dli_fname);
+ fprintf(stderr, "dli_fbase = 0x%08x\n", (unsigned int)info.dli_fbase);
+ fprintf(stderr, "dli_sname = %s\n", info.dli_sname);
+ fprintf(stderr, "dli_saddr = 0x%08x\n", (unsigned int)info.dli_saddr);
+ exit(1);
+ }
+
+ fprintf(stderr, "dladdr() failed as expected\n");
+ return EXIT_SUCCESS;
+}
+
|