Re: [FFmpeg-devel] [PATCH] avfilter/vf_unsharp: Don't dereference NULL

2019-12-03 Thread Michael Niedermayer
On Sun, Dec 01, 2019 at 11:04:36AM +0100, Paul B Mahol wrote:
> LGTM

will apply

thx

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

I have never wished to cater to the crowd; for what I know they do not
approve, and what they approve I do not know. -- Epicurus


signature.asc
Description: PGP signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Re: [FFmpeg-devel] [PATCH] avfilter/vf_unsharp: Don't dereference NULL

2019-12-01 Thread Paul B Mahol
LGTM

On 12/1/19, Andreas Rheinhardt  wrote:
> The unsharp filter uses an array of arrays of uint32_t, each of which is
> separately allocated. These arrays also need to freed separately; but
> before doing so, one needs to check whether the array of arrays has
> actually been allocated, otherwise one would dereference a NULL pointer.
> This fixes #8408.
>
> Furthermore, the array of arrays needs to be zero-initialized so that
> no uninitialized pointer will be freed in case an allocation of one of
> the individual arrays fails.
>
> Signed-off-by: Andreas Rheinhardt 
> ---
>  libavfilter/vf_unsharp.c | 10 ++
>  1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/libavfilter/vf_unsharp.c b/libavfilter/vf_unsharp.c
> index 95b4968d41..7b430b650d 100644
> --- a/libavfilter/vf_unsharp.c
> +++ b/libavfilter/vf_unsharp.c
> @@ -218,7 +218,7 @@ static int init_filter_param(AVFilterContext *ctx,
> UnsharpFilterParam *fp, const
> effect, effect_type, fp->msize_x, fp->msize_y, fp->amount /
> 65535.0);
>
>  fp->sr = av_malloc_array((MAX_MATRIX_SIZE - 1) * s->nb_threads,
> sizeof(uint32_t));
> -fp->sc = av_malloc_array(2 * fp->steps_y * s->nb_threads,
> sizeof(uint32_t **));
> +fp->sc = av_mallocz_array(2 * fp->steps_y * s->nb_threads,
> sizeof(uint32_t *));
>  if (!fp->sr || !fp->sc)
>  return AVERROR(ENOMEM);
>
> @@ -258,9 +258,11 @@ static void free_filter_param(UnsharpFilterParam *fp,
> int nb_threads)
>  {
>  int z;
>
> -for (z = 0; z < 2 * fp->steps_y * nb_threads; z++)
> -av_freep(>sc[z]);
> -av_freep(>sc);
> +if (fp->sc) {
> +for (z = 0; z < 2 * fp->steps_y * nb_threads; z++)
> +av_freep(>sc[z]);
> +av_freep(>sc);
> +}
>  av_freep(>sr);
>  }
>
> --
> 2.20.1
>
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-devel] [PATCH] avfilter/vf_unsharp: Don't dereference NULL

2019-12-01 Thread Andreas Rheinhardt
The unsharp filter uses an array of arrays of uint32_t, each of which is
separately allocated. These arrays also need to freed separately; but
before doing so, one needs to check whether the array of arrays has
actually been allocated, otherwise one would dereference a NULL pointer.
This fixes #8408.

Furthermore, the array of arrays needs to be zero-initialized so that
no uninitialized pointer will be freed in case an allocation of one of
the individual arrays fails.

Signed-off-by: Andreas Rheinhardt 
---
 libavfilter/vf_unsharp.c | 10 ++
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/libavfilter/vf_unsharp.c b/libavfilter/vf_unsharp.c
index 95b4968d41..7b430b650d 100644
--- a/libavfilter/vf_unsharp.c
+++ b/libavfilter/vf_unsharp.c
@@ -218,7 +218,7 @@ static int init_filter_param(AVFilterContext *ctx, 
UnsharpFilterParam *fp, const
effect, effect_type, fp->msize_x, fp->msize_y, fp->amount / 
65535.0);
 
 fp->sr = av_malloc_array((MAX_MATRIX_SIZE - 1) * s->nb_threads, 
sizeof(uint32_t));
-fp->sc = av_malloc_array(2 * fp->steps_y * s->nb_threads, sizeof(uint32_t 
**));
+fp->sc = av_mallocz_array(2 * fp->steps_y * s->nb_threads, sizeof(uint32_t 
*));
 if (!fp->sr || !fp->sc)
 return AVERROR(ENOMEM);
 
@@ -258,9 +258,11 @@ static void free_filter_param(UnsharpFilterParam *fp, int 
nb_threads)
 {
 int z;
 
-for (z = 0; z < 2 * fp->steps_y * nb_threads; z++)
-av_freep(>sc[z]);
-av_freep(>sc);
+if (fp->sc) {
+for (z = 0; z < 2 * fp->steps_y * nb_threads; z++)
+av_freep(>sc[z]);
+av_freep(>sc);
+}
 av_freep(>sr);
 }
 
-- 
2.20.1

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".