[FFmpeg-devel] [PATCH 12/23] dnn/dnn_backend_native: Don't use asserts for checks

Guo, Yejun yejun.guo at intel.com
Thu Mar 11 04:23:50 EET 2021



> -----Original Message-----
> From: ffmpeg-devel <ffmpeg-devel-bounces at ffmpeg.org> On Behalf Of
> Andreas Rheinhardt
> Sent: 2021年3月11日 5:55
> To: ffmpeg-devel at ffmpeg.org
> Cc: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
> Subject: [FFmpeg-devel] [PATCH 12/23] dnn/dnn_backend_native: Don't use
> asserts for checks
> 
> asserts should not be used instead of ordinary input checks.
> Yet the native DNN backend did it: get_input_native() asserted that
> the first dimension was one, despite this value coming directly from
> the input file without having been sanitized.
> 
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
> ---
> get_input_native() only asserts this for input operands; so it might be
> that the check below should also check for this (depending upon whether
> 1 is a valid value for output operands).
> 
>  libavfilter/dnn/dnn_backend_native.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/libavfilter/dnn/dnn_backend_native.c
> b/libavfilter/dnn/dnn_backend_native.c
> index fd1f9e299d..b3c41af94e 100644
> --- a/libavfilter/dnn/dnn_backend_native.c
> +++ b/libavfilter/dnn/dnn_backend_native.c
> @@ -231,6 +231,8 @@ DNNModel *ff_dnn_load_model_native(const char
> *model_filename, DNNFunctionType f
>              oprd->dims[dim] = (int32_t)avio_rl32(model_file_context);
>              dnn_size += 4;
>          }
> +        if (oprd->dims[0] != 1)
> +            goto fail;

Thanks, the operands here include input, output and intermediate whose dims[0]
could be any other values, so, the fix here can be:

        if (oprd->dims[0] != 1 && oprd->type == DOT_INPUT)
            goto fail;


More information about the ffmpeg-devel mailing list