[libdazzle] reaper: don't allow symlinks as directory for globs
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libdazzle] reaper: don't allow symlinks as directory for globs
- Date: Fri, 26 Jan 2018 02:18:42 +0000 (UTC)
commit 6f3e80625f3a00cbc44ed8aea1f6808ea3098b5f
Author: Christian Hergert <chergert redhat com>
Date: Thu Jan 25 18:18:23 2018 -0800
reaper: don't allow symlinks as directory for globs
If the glob pattern is specified within a symlink, disallow that. Require
that the consumer uses the non-symlink form instead. This helps us be just
a little bit more defensive against accidental follow-through deletes.
src/files/dzl-directory-reaper.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
---
diff --git a/src/files/dzl-directory-reaper.c b/src/files/dzl-directory-reaper.c
index 2bf2b20..b1b9f12 100644
--- a/src/files/dzl-directory-reaper.c
+++ b/src/files/dzl-directory-reaper.c
@@ -233,6 +233,7 @@ dzl_directory_reaper_execute_worker (GTask *task,
{
const Pattern *p = &g_array_index (patterns, Pattern, i);
g_autoptr(GFileInfo) info = NULL;
+ g_autoptr(GFileInfo) dir_info = NULL;
g_autoptr(GPatternSpec) spec = NULL;
g_autoptr(GFileEnumerator) enumerator = NULL;
g_autoptr(GError) error = NULL;
@@ -278,6 +279,25 @@ dzl_directory_reaper_execute_worker (GTask *task,
break;
}
+ dir_info = g_file_query_info (p->glob.directory,
+ G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK","
+ G_FILE_ATTRIBUTE_STANDARD_TYPE",",
+ G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
+ cancellable,
+ &error);
+
+ if (dir_info == NULL)
+ {
+ if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND))
+ g_warning ("%s", error->message);
+ break;
+ }
+
+ /* Do not follow through symlinks. */
+ if (g_file_info_get_is_symlink (dir_info) ||
+ g_file_info_get_file_type (dir_info) != G_FILE_TYPE_DIRECTORY)
+ break;
+
enumerator = g_file_enumerate_children (p->glob.directory,
G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK","
G_FILE_ATTRIBUTE_STANDARD_NAME","
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]