From 665ab65e7ea02f2f8f05bfd64e74dcdd792807d5 Mon Sep 17 00:00:00 2001 From: Luca Bacci Date: Wed, 7 Feb 2024 14:25:41 +0100 Subject: [PATCH] file_copy_fallback: Check if attributes could be retrieved See #3210 --- gio/gfile.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/gio/gfile.c b/gio/gfile.c index 2ceeb3b05..d52262f13 100644 --- a/gio/gfile.c +++ b/gio/gfile.c @@ -3378,10 +3378,24 @@ file_copy_fallback (GFile *source, if (!info) goto out; + if (!g_file_info_has_attribute (info, G_FILE_ATTRIBUTE_STANDARD_TYPE)) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, + _("Cannot retrieve attribute %s"), G_FILE_ATTRIBUTE_STANDARD_TYPE); + goto out; + } + /* Maybe copy the symlink? */ if ((flags & G_FILE_COPY_NOFOLLOW_SYMLINKS) && g_file_info_get_file_type (info) == G_FILE_TYPE_SYMBOLIC_LINK) { + if (!g_file_info_has_attribute (info, G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET)) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, + _("Cannot retrieve attribute %s"), G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET); + goto out; + } + target = g_file_info_get_symlink_target (info); if (target) {