From 718b7d0b5dea5c7c2ea77ea5d66438653ec210da Mon Sep 17 00:00:00 2001 From: Haihao Xiang Date: Wed, 12 Dec 2018 12:52:46 +0800 Subject: [PATCH] msdk: check the created context against NULL pointer gst_msdk_context_new_with_parent() may return NULL --- sys/msdk/gstmsdkdec.c | 11 +++++++++-- sys/msdk/gstmsdkenc.c | 11 +++++++++-- sys/msdk/gstmsdkvpp.c | 11 +++++++++-- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/sys/msdk/gstmsdkdec.c b/sys/msdk/gstmsdkdec.c index 4a52999744..016122dce8 100644 --- a/sys/msdk/gstmsdkdec.c +++ b/sys/msdk/gstmsdkdec.c @@ -649,10 +649,17 @@ gst_msdkdec_start (GstVideoDecoder * decoder) thiz->use_video_memory = TRUE; if (gst_msdk_context_get_job_type (thiz->context) & GST_MSDK_JOB_DECODER) { - GstMsdkContext *parent_context; + GstMsdkContext *parent_context, *msdk_context; parent_context = thiz->context; - thiz->context = gst_msdk_context_new_with_parent (parent_context); + msdk_context = gst_msdk_context_new_with_parent (parent_context); + + if (!msdk_context) { + GST_ERROR_OBJECT (thiz, "Context creation failed"); + return FALSE; + } + + thiz->context = msdk_context; gst_msdk_context_add_shared_async_depth (thiz->context, gst_msdk_context_get_shared_async_depth (parent_context)); diff --git a/sys/msdk/gstmsdkenc.c b/sys/msdk/gstmsdkenc.c index 3a32e650fb..6a0db481db 100644 --- a/sys/msdk/gstmsdkenc.c +++ b/sys/msdk/gstmsdkenc.c @@ -1371,10 +1371,17 @@ gst_msdkenc_start (GstVideoEncoder * encoder) thiz->context); if (gst_msdk_context_get_job_type (thiz->context) & GST_MSDK_JOB_ENCODER) { - GstMsdkContext *parent_context; + GstMsdkContext *parent_context, *msdk_context; parent_context = thiz->context; - thiz->context = gst_msdk_context_new_with_parent (parent_context); + msdk_context = gst_msdk_context_new_with_parent (parent_context); + + if (!msdk_context) { + GST_ERROR_OBJECT (thiz, "Context creation failed"); + return FALSE; + } + + thiz->context = msdk_context; gst_object_unref (parent_context); GST_INFO_OBJECT (thiz, diff --git a/sys/msdk/gstmsdkvpp.c b/sys/msdk/gstmsdkvpp.c index eea834461a..882134f19b 100644 --- a/sys/msdk/gstmsdkvpp.c +++ b/sys/msdk/gstmsdkvpp.c @@ -144,10 +144,17 @@ ensure_context (GstBaseTransform * trans) thiz->context); if (gst_msdk_context_get_job_type (thiz->context) & GST_MSDK_JOB_VPP) { - GstMsdkContext *parent_context; + GstMsdkContext *parent_context, *msdk_context; parent_context = thiz->context; - thiz->context = gst_msdk_context_new_with_parent (parent_context); + msdk_context = gst_msdk_context_new_with_parent (parent_context); + + if (!msdk_context) { + GST_ERROR_OBJECT (thiz, "Context creation failed"); + return FALSE; + } + + thiz->context = msdk_context; gst_object_unref (parent_context); GST_INFO_OBJECT (thiz,