gst/gstregistry.c: Don't recurse into .debug directories as some distros install the debugging symbols next to the pl...

Original commit message from CVS:
Patch by: Rob Bradford <rob at robster dot org dot uk>
* gst/gstregistry.c: (gst_registry_scan_path_level):
Don't recurse into .debug directories as some distros install
the debugging symbols next to the plugins in .debug directories
and dlopen() crashes on them sometimes. Fixes bug #508070.
Add FIXME for 0.11 to not recurse into directories at all because
it's very inconsistent to the behaviour of other PATH environment
variables.
This commit is contained in:
Rob Bradford 2008-05-30 07:36:17 +00:00 committed by Sebastian Dröge
parent 5cba5bdbf1
commit 9f9422bcb3
2 changed files with 23 additions and 0 deletions

View file

@ -1,3 +1,16 @@
2008-05-30 Sebastian Dröge <slomo@circular-chaos.org>
Patch by: Rob Bradford <rob at robster dot org dot uk>
* gst/gstregistry.c: (gst_registry_scan_path_level):
Don't recurse into .debug directories as some distros install
the debugging symbols next to the plugins in .debug directories
and dlopen() crashes on them sometimes. Fixes bug #508070.
Add FIXME for 0.11 to not recurse into directories at all because
it's very inconsistent to the behaviour of other PATH environment
variables.
2008-05-29 Wim Taymans <wim.taymans@collabora.co.uk>
* libs/gst/base/gstbasesink.c: (gst_base_sink_get_sync_times),

View file

@ -812,6 +812,16 @@ gst_registry_scan_path_level (GstRegistry * registry, const gchar * path,
filename = g_strjoin ("/", path, dirent, NULL);
if (g_file_test (filename, G_FILE_TEST_IS_DIR)) {
/* skip the .debug directory, these contain elf files that are not
* useful or worse, can crash dlopen () */
if (g_str_equal (dirent, ".debug")) {
GST_LOG_OBJECT (registry, "found .debug directory, ignoring");
g_free (filename);
continue;
}
/* FIXME 0.11: Don't recurse into directories, this behaviour
* is inconsistent with other PATH environment variables
*/
if (level > 0) {
GST_LOG_OBJECT (registry, "recursing into directory %s", filename);
changed |= gst_registry_scan_path_level (registry, filename, level - 1);