[gvfs/gnome-3-28] metadata: Prevent usage of NULL if GUdevDevice is not found



commit e4933073dd30e94a00cdd02f77f05238c279fa04
Author: Ondrej Holy <oholy redhat com>
Date:   Thu Apr 12 13:12:37 2018 +0200

    metadata: Prevent usage of NULL if GUdevDevice is not found
    
    Code to determine tree name from device has been recently ported from
    udev to gudev by commit c2d8564. Unfortunately, the gudev code floods
    logs by the following messages if device is not found (it can happen
    e.g. for tmpfs):
    g_udev_device_has_property: assertion 'G_UDEV_IS_DEVICE (device)' failed
    
    Udev code silently returned if NULL device was used, however, corresponding
    gudev code prints the mentioned messages. Let's prevent usage of NULL
    device in order to prevent those messages.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=795191

 metadata/meta-daemon.c |   14 ++++++++------
 1 files changed, 8 insertions(+), 6 deletions(-)
---
diff --git a/metadata/meta-daemon.c b/metadata/meta-daemon.c
index 444a439..26edfcb 100644
--- a/metadata/meta-daemon.c
+++ b/metadata/meta-daemon.c
@@ -319,13 +319,15 @@ handle_get_tree_from_device (GVfsMetadata *object,
     g_once_init_leave (&gudev_client, g_udev_client_new (NULL));
 
   device = g_udev_client_query_by_device_number (gudev_client, G_UDEV_DEVICE_TYPE_BLOCK, devnum);
+  if (device != NULL)
+    {
+      if (g_udev_device_has_property (device, "ID_FS_UUID_ENC"))
+        res = g_strconcat ("uuid-", g_udev_device_get_property (device, "ID_FS_UUID_ENC"), NULL);
+      else if (g_udev_device_has_property (device, "ID_FS_LABEL_ENC"))
+        res = g_strconcat ("label-", g_udev_device_get_property (device, "ID_FS_LABEL_ENC"), NULL);
 
-  if (g_udev_device_has_property (device, "ID_FS_UUID_ENC"))
-    res = g_strconcat ("uuid-", g_udev_device_get_property (device, "ID_FS_UUID_ENC"), NULL);
-  else if (g_udev_device_has_property (device, "ID_FS_LABEL_ENC"))
-    res = g_strconcat ("label-", g_udev_device_get_property (device, "ID_FS_LABEL_ENC"), NULL);
-
-  g_clear_object (&device);
+      g_clear_object (&device);
+    }
 #endif
 
   gvfs_metadata_complete_get_tree_from_device (object, invocation, res ? res : "");


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]