summaryrefslogtreecommitdiff
path: root/libavfilter/dnn
diff options
context:
space:
mode:
authorJun Zhao <barryjzhao@tencent.com>2020-12-09 17:53:10 +0800
committerGuo, Yejun <yejun.guo@intel.com>2020-12-12 13:34:30 +0800
commit0320dab265ef880b5b07cac1f9ebaa3fb5417f6a (patch)
tree8c7e1db57687419b32b0c4ae383551c3e9aa06a0 /libavfilter/dnn
parentae2075265b8e779ed0545aa4f9b238013b4e446f (diff)
lavfi/dnn: check the return value from sws_getContext
sws_getContext may be return NULL, and it's will be dereferenced, so add the check. Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
Diffstat (limited to 'libavfilter/dnn')
-rw-r--r--libavfilter/dnn/dnn_io_proc.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/libavfilter/dnn/dnn_io_proc.c b/libavfilter/dnn/dnn_io_proc.c
index db13d7f5ce..c9b49be3bd 100644
--- a/libavfilter/dnn/dnn_io_proc.c
+++ b/libavfilter/dnn/dnn_io_proc.c
@@ -41,6 +41,13 @@ DNNReturnType proc_from_dnn_to_frame(AVFrame *frame, DNNData *output, void *log_
frame->height,
AV_PIX_FMT_GRAY8,
0, NULL, NULL, NULL);
+ if (!sws_ctx) {
+ av_log(log_ctx, AV_LOG_ERROR, "Impossible to create scale context for the conversion "
+ "fmt:%s s:%dx%d -> fmt:%s s:%dx%d\n",
+ av_get_pix_fmt_name(AV_PIX_FMT_GRAYF32), frame->width * 3, frame->height,
+ av_get_pix_fmt_name(AV_PIX_FMT_GRAY8), frame->width * 3, frame->height);
+ return DNN_ERROR;
+ }
sws_scale(sws_ctx, (const uint8_t *[4]){(const uint8_t *)output->data, 0, 0, 0},
(const int[4]){frame->width * 3 * sizeof(float), 0, 0, 0}, 0, frame->height,
(uint8_t * const*)frame->data, frame->linesize);
@@ -64,6 +71,13 @@ DNNReturnType proc_from_dnn_to_frame(AVFrame *frame, DNNData *output, void *log_
frame->height,
AV_PIX_FMT_GRAY8,
0, NULL, NULL, NULL);
+ if (!sws_ctx) {
+ av_log(log_ctx, AV_LOG_ERROR, "Impossible to create scale context for the conversion "
+ "fmt:%s s:%dx%d -> fmt:%s s:%dx%d\n",
+ av_get_pix_fmt_name(AV_PIX_FMT_GRAYF32), frame->width, frame->height,
+ av_get_pix_fmt_name(AV_PIX_FMT_GRAY8), frame->width, frame->height);
+ return DNN_ERROR;
+ }
sws_scale(sws_ctx, (const uint8_t *[4]){(const uint8_t *)output->data, 0, 0, 0},
(const int[4]){frame->width * sizeof(float), 0, 0, 0}, 0, frame->height,
(uint8_t * const*)frame->data, frame->linesize);
@@ -97,6 +111,13 @@ DNNReturnType proc_from_frame_to_dnn(AVFrame *frame, DNNData *input, void *log_c
frame->height,
AV_PIX_FMT_GRAYF32,
0, NULL, NULL, NULL);
+ if (!sws_ctx) {
+ av_log(log_ctx, AV_LOG_ERROR, "Impossible to create scale context for the conversion "
+ "fmt:%s s:%dx%d -> fmt:%s s:%dx%d\n",
+ av_get_pix_fmt_name(AV_PIX_FMT_GRAY8), frame->width * 3, frame->height,
+ av_get_pix_fmt_name(AV_PIX_FMT_GRAYF32),frame->width * 3, frame->height);
+ return DNN_ERROR;
+ }
sws_scale(sws_ctx, (const uint8_t **)frame->data,
frame->linesize, 0, frame->height,
(uint8_t * const*)(&input->data),
@@ -121,6 +142,13 @@ DNNReturnType proc_from_frame_to_dnn(AVFrame *frame, DNNData *input, void *log_c
frame->height,
AV_PIX_FMT_GRAYF32,
0, NULL, NULL, NULL);
+ if (!sws_ctx) {
+ av_log(log_ctx, AV_LOG_ERROR, "Impossible to create scale context for the conversion "
+ "fmt:%s s:%dx%d -> fmt:%s s:%dx%d\n",
+ av_get_pix_fmt_name(AV_PIX_FMT_GRAY8), frame->width, frame->height,
+ av_get_pix_fmt_name(AV_PIX_FMT_GRAYF32),frame->width, frame->height);
+ return DNN_ERROR;
+ }
sws_scale(sws_ctx, (const uint8_t **)frame->data,
frame->linesize, 0, frame->height,
(uint8_t * const*)(&input->data),