Skip to content

Commit

Permalink
Search for dllimported shared libs in the base directory, not cwd.
Browse files Browse the repository at this point in the history
* loader.c: we don't search the current directory anymore for shared
libraries referenced in DllImport attributes, as it has a slight
security risk. We search in the same directory where the referencing
image was loaded from, instead. Fixes bug# 641915.
  • Loading branch information
illupus committed Oct 12, 2010
1 parent 6a5b238 commit d3985be
Showing 1 changed file with 10 additions and 8 deletions.
18 changes: 10 additions & 8 deletions mono/metadata/loader.c
Original file line number Diff line number Diff line change
Expand Up @@ -1343,32 +1343,34 @@ mono_lookup_pinvoke_call (MonoMethod *method, const char **exc_class, const char

if (!module) {
void *iter = NULL;
while ((full_name = mono_dl_build_path (NULL, file_name, &iter))) {
char *mdirname = g_path_get_dirname (image->name);
while ((full_name = mono_dl_build_path (mdirname, file_name, &iter))) {
mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_DLLIMPORT,
"DllImport loading location: '%s'.", full_name);
"DllImport loading library: '%s'.", full_name);
module = cached_module_load (full_name, MONO_DL_LAZY, &error_msg);
if (!module) {
mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_DLLIMPORT,
"DllImport error loading library: '%s'.",
error_msg);
"DllImport error loading library '%s'.",
error_msg);
g_free (error_msg);
}
g_free (full_name);
if (module)
break;
}
g_free (mdirname);
}

if (!module) {
void *iter = NULL;
while ((full_name = mono_dl_build_path (".", file_name, &iter))) {
while ((full_name = mono_dl_build_path (NULL, file_name, &iter))) {
mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_DLLIMPORT,
"DllImport loading library: '%s'.", full_name);
"DllImport loading location: '%s'.", full_name);
module = cached_module_load (full_name, MONO_DL_LAZY, &error_msg);
if (!module) {
mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_DLLIMPORT,
"DllImport error loading library '%s'.",
error_msg);
"DllImport error loading library: '%s'.",
error_msg);
g_free (error_msg);
}
g_free (full_name);
Expand Down

0 comments on commit d3985be

Please sign in to comment.