From 9e5e699227f43e3dd64933dc96508b88b1a76bba Mon Sep 17 00:00:00 2001 From: Loic Poulain Date: Tue, 3 Aug 2021 18:05:18 +0200 Subject: kernel-device-generic: Fix ptr_array_add_sysfs_attribute_link_basename A pointer can not be used anymore after its ownership has been transfered using the g_steal_pointer function (pointer is nullified). In this function, g_steal_pointer() is used when inserting 'value' inside the array but can also be subsequently used when dumping 'value' to 'out_value' via g_strdup(). Fix that with simple reordering. Signed-off-by: Loic Poulain --- src/kerneldevice/mm-kernel-device-generic.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/kerneldevice/mm-kernel-device-generic.c b/src/kerneldevice/mm-kernel-device-generic.c index 94f969f9..bfdd8c37 100644 --- a/src/kerneldevice/mm-kernel-device-generic.c +++ b/src/kerneldevice/mm-kernel-device-generic.c @@ -238,10 +238,12 @@ ptr_array_add_sysfs_attribute_link_basename (GPtrArray *array, g_assert (array && sysfs_path && attribute); value = read_sysfs_attribute_link_basename (sysfs_path, attribute); - if (value && !g_ptr_array_find_with_equal_func (array, value, g_str_equal, NULL)) - g_ptr_array_add (array, g_steal_pointer (&value)); + if (out_value) *out_value = g_strdup (value); + if (value && !g_ptr_array_find_with_equal_func (array, value, g_str_equal, NULL)) + g_ptr_array_add (array, g_steal_pointer (&value)); + } static void -- cgit v1.2.3-70-g09d2