It's wrong to call g_file_test() with more than one test (both

2004-12-31  Tor Lillqvist  <tml@iki.fi>

	* gmodule.c (g_module_open): It's wrong to call g_file_test() with
	more than one test (both G_FILE_TEST_EXISTS and _IS_REGULAR). (It
	would succeed even if the pathname existed as a nonregular file.)
	Just G_FILE_TEST_IS_REGULAR works fine. (#162594)
This commit is contained in:
Tor Lillqvist 2005-01-02 16:03:56 +00:00 committed by Tor Lillqvist
parent 66f109711a
commit a8cf492b2c
2 changed files with 10 additions and 3 deletions

View File

@ -1,3 +1,10 @@
2004-12-31 Tor Lillqvist <tml@iki.fi>
* gmodule.c (g_module_open): It's wrong to call g_file_test() with
more than one test (both G_FILE_TEST_EXISTS and _IS_REGULAR). (It
would succeed even if the pathname existed as a nonregular file.)
Just G_FILE_TEST_IS_REGULAR works fine. (#162594)
2004-12-16 Matthias Clasen <mclasen@redhat.com> 2004-12-16 Matthias Clasen <mclasen@redhat.com>
* === Released 2.6.0 === * === Released 2.6.0 ===

View File

@ -349,13 +349,13 @@ g_module_open (const gchar *file_name,
} }
/* check whether we have a readable file right away */ /* check whether we have a readable file right away */
if (g_file_test (file_name, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) if (g_file_test (file_name, G_FILE_TEST_IS_REGULAR))
name = g_strdup (file_name); name = g_strdup (file_name);
/* try completing file name with standard library suffix */ /* try completing file name with standard library suffix */
if (!name) if (!name)
{ {
name = g_strconcat (file_name, "." G_MODULE_SUFFIX, NULL); name = g_strconcat (file_name, "." G_MODULE_SUFFIX, NULL);
if (!g_file_test (name, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) if (!g_file_test (name, G_FILE_TEST_IS_REGULAR))
{ {
g_free (name); g_free (name);
name = NULL; name = NULL;
@ -365,7 +365,7 @@ g_module_open (const gchar *file_name,
if (!name) if (!name)
{ {
name = g_strconcat (file_name, ".la", NULL); name = g_strconcat (file_name, ".la", NULL);
if (!g_file_test (name, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) if (!g_file_test (name, G_FILE_TEST_IS_REGULAR))
{ {
g_free (name); g_free (name);
name = NULL; name = NULL;