From 8bc514402072f4dc9ac41d66369b60d88180940a Mon Sep 17 00:00:00 2001 From: Yeongjin Jeong Date: Fri, 9 Aug 2019 20:13:59 +0900 Subject: [PATCH] vulkan: Don't dereference null pointer when printing error When printing error message because the function failed, the GError variable may not be used and it can be NULL. --- ext/vulkan/vkdownload.c | 3 ++- ext/vulkan/vksink.c | 17 +++++++++-------- ext/vulkan/vkupload.c | 3 ++- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/ext/vulkan/vkdownload.c b/ext/vulkan/vkdownload.c index 4ca0aebed0..e3504e1715 100644 --- a/ext/vulkan/vkdownload.c +++ b/ext/vulkan/vkdownload.c @@ -639,7 +639,8 @@ gst_vulkan_download_change_state (GstElement * element, gst_vulkan_instance_create_device (vk_download->instance, &error))) { GST_ELEMENT_ERROR (vk_download, RESOURCE, NOT_FOUND, - ("Failed to create vulkan device"), ("%s", error->message)); + ("Failed to create vulkan device"), ("%s", + error ? error->message : "")); g_clear_error (&error); return GST_STATE_CHANGE_FAILURE; } diff --git a/ext/vulkan/vksink.c b/ext/vulkan/vksink.c index e053c4fbce..b6617aff19 100644 --- a/ext/vulkan/vksink.c +++ b/ext/vulkan/vksink.c @@ -270,7 +270,8 @@ gst_vulkan_sink_change_state (GstElement * element, GstStateChange transition) if (!(vk_sink->device = gst_vulkan_instance_create_device (vk_sink->instance, &error))) { GST_ELEMENT_ERROR (vk_sink, RESOURCE, NOT_FOUND, - ("Failed to create vulkan device"), ("%s", error->message)); + ("Failed to create vulkan device"), ("%s", + error ? error->message : "")); g_clear_error (&error); return GST_STATE_CHANGE_FAILURE; } @@ -293,7 +294,7 @@ gst_vulkan_sink_change_state (GstElement * element, GstStateChange transition) if (!gst_vulkan_window_open (vk_sink->window, &error)) { GST_ELEMENT_ERROR (vk_sink, RESOURCE, NOT_FOUND, - ("Failed to open window"), ("%s", error->message)); + ("Failed to open window"), ("%s", error ? error->message : "")); g_clear_error (&error); return GST_STATE_CHANGE_FAILURE; } @@ -316,8 +317,8 @@ gst_vulkan_sink_change_state (GstElement * element, GstStateChange transition) gst_vulkan_queue_run_context_query (GST_ELEMENT (vk_sink), &queue); if (!gst_vulkan_swapper_choose_queue (vk_sink->swapper, queue, &error)) { GST_ELEMENT_ERROR (vk_sink, RESOURCE, NOT_FOUND, - ("Swapper failed to choose a compatible Vulkan Queue"), ("%s", - error->message)); + ("Swapper failed to choose a compatible Vulkan Queue"), + ("%s", error ? error->message : "")); return GST_STATE_CHANGE_FAILURE; } } @@ -395,8 +396,8 @@ gst_vulkan_sink_get_caps (GstBaseSink * bsink, GstCaps * filter) if (vk_sink->swapper) { if (!(result = gst_vulkan_swapper_get_supported_caps (vk_sink->swapper, &error))) { - GST_ELEMENT_ERROR (bsink, RESOURCE, NOT_FOUND, ("%s", error->message), - (NULL)); + GST_ELEMENT_ERROR (bsink, RESOURCE, NOT_FOUND, ("%s", + error ? error->message : ""), (NULL)); g_clear_error (&error); return NULL; } @@ -498,7 +499,7 @@ gst_vulkan_sink_set_caps (GstBaseSink * bsink, GstCaps * caps) if (!gst_vulkan_swapper_set_caps (vk_sink->swapper, caps, &error)) { GST_ELEMENT_ERROR (vk_sink, RESOURCE, NOT_FOUND, - ("Failed to configure caps"), ("%s", error->message)); + ("Failed to configure caps"), ("%s", error ? error->message : "")); g_clear_error (&error); return FALSE; } @@ -532,7 +533,7 @@ gst_vulkan_sink_show_frame (GstVideoSink * vsink, GstBuffer * buf) if (!gst_vulkan_swapper_render_buffer (vk_sink->swapper, buf, &error)) { GST_ELEMENT_ERROR (vk_sink, RESOURCE, NOT_FOUND, - ("Failed to render buffer"), ("%s", error->message)); + ("Failed to render buffer"), ("%s", error ? error->message : "")); g_clear_error (&error); return GST_FLOW_ERROR; } diff --git a/ext/vulkan/vkupload.c b/ext/vulkan/vkupload.c index af1996072b..198d391e18 100644 --- a/ext/vulkan/vkupload.c +++ b/ext/vulkan/vkupload.c @@ -1348,7 +1348,8 @@ gst_vulkan_upload_change_state (GstElement * element, GstStateChange transition) gst_vulkan_instance_create_device (vk_upload->instance, &error))) { GST_ELEMENT_ERROR (vk_upload, RESOURCE, NOT_FOUND, - ("Failed to create vulkan device"), ("%s", error->message)); + ("Failed to create vulkan device"), ("%s", + error ? error->message : "")); g_clear_error (&error); return GST_STATE_CHANGE_FAILURE; }