gunixmounts.c: Use g_access() to check accessibility of local devices.

Patch by Martin Pitt


svn path=/branches/glib-2-18/; revision=7786
This commit is contained in:
Matthias Clasen
2009-01-09 05:43:55 +00:00
parent 0175ecfd9a
commit 16bde9685a
2 changed files with 21 additions and 1 deletions

View File

@@ -1,3 +1,13 @@
2009-01-09 Matthias Clasen <mclasen@redhat.com>
Merged from trunk:
Bug 526320 should not list mounts that the user doesn't have
permission to use
gunixmounts.c: Use g_access() to check accessibility of local devices.
Patch by Martin Pitt
2008-12-01 Matthias Clasen <mclasen@redhat.com> 2008-12-01 Matthias Clasen <mclasen@redhat.com>
Merged from trunk: Merged from trunk:

View File

@@ -1882,7 +1882,8 @@ g_unix_mount_guess_should_display (GUnixMountEntry *mount_entry)
/* Avoid displaying mounts that are not accessible to the user. /* Avoid displaying mounts that are not accessible to the user.
* *
* See http://bugzilla.gnome.org/show_bug.cgi?id=526320 for why we * See http://bugzilla.gnome.org/show_bug.cgi?id=526320 for why we
* want to avoid g_access() for every mount point. * want to avoid g_access() for mount points which can potentially
* block or fail stat()'ing, such as network mounts.
*/ */
path = g_path_get_dirname (mount_path); path = g_path_get_dirname (mount_path);
if (g_str_has_prefix (path, "/media/")) if (g_str_has_prefix (path, "/media/"))
@@ -1893,6 +1894,15 @@ g_unix_mount_guess_should_display (GUnixMountEntry *mount_entry)
} }
} }
g_free (path); g_free (path);
if (mount_entry->device_path && mount_entry->device_path[0] == '/')
{
struct stat st;
if (g_stat (mount_entry->device_path, &st) == 0 &&
S_ISBLK(st.st_mode) &&
g_access (mount_path, R_OK|X_OK) != 0)
return FALSE;
}
return TRUE; return TRUE;
} }