diff options
Diffstat (limited to 'libjava/name-finder.cc')
-rw-r--r-- | libjava/name-finder.cc | 10 |
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; } } |