aboutsummaryrefslogtreecommitdiff
path: root/libjava/name-finder.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/name-finder.cc')
-rw-r--r--libjava/name-finder.cc10
1 files changed, 7 insertions, 3 deletions
diff --git a/libjava/name-finder.cc b/libjava/name-finder.cc
index 3baa6e3c6bf..36726bd941a 100644
--- a/libjava/name-finder.cc
+++ b/libjava/name-finder.cc
@@ -145,11 +145,15 @@ _Jv_name_finder::lookup (void *p)
if (dladdr (p, &dl_info))
{
- strncpy (file_name, dl_info.dli_fname, sizeof file_name);
- strncpy (method_name, dl_info.dli_sname, sizeof method_name);
+ if (dl_info.dli_fname)
+ strncpy (file_name, dl_info.dli_fname, sizeof file_name);
+ if (dl_info.dli_sname)
+ strncpy (method_name, dl_info.dli_sname, sizeof method_name);
/* Don't trust dladdr() if the address is from the main program. */
- if (_Jv_argv == NULL || strcmp (file_name, _Jv_argv[0]) != 0)
+ if (dl_info.dli_fname != NULL
+ && dl_info.dli_sname != NULL
+ && (_Jv_argv == NULL || strcmp (file_name, _Jv_argv[0]) != 0))
return true;
}
}