Eric Wong <normalper...@yhbt.net> writes:

> +Cc sox-devel.
>
> Joonun: thank you for reporting, the following patch should fix
> the problem.  I guess make sure sox-devel knows about any other
> bugs you find; original upstream developers seem to busy so it's
> mostly Måns and I.  I don't think either of us have permission
> to the SourceForge.net project; either...
>
> Will also try to look at https://bugs.debian.org/881121 soon
> (maybe Måns can help).

Oh, that one's easy.  I'll have a patch for it today.

> -----------8<---------
> From: Eric Wong <e...@80x24.org>
> Subject: [PATCH] wavpack: check errors when initializing
>
> Avoid NULL dereference when opening an WavPack input file fails
> as described by Debian Bug #881145.
>
> While we're at it, check for malloc failures when opening an
> output file to avoid other NULL dereference bugs.
>
> cf. https://bugs.debian.org/881145
>
> Cc: Joonun Jang <joonun.j...@gmail.com>
> Cc: 881...@bugs.debian.org
> ---
>  src/wavpack.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
>
> diff --git a/src/wavpack.c b/src/wavpack.c
> index 9e525cd4..b7e8dafa 100644
> --- a/src/wavpack.c
> +++ b/src/wavpack.c
> @@ -65,6 +65,10 @@ static int start_read(sox_format_t * ft)
>    char msg[80];
>
>    p->codec = WavpackOpenFileInputEx(&io_fns, ft, NULL, msg, OPEN_NORMALIZE, 
> 0);
> +  if (!p->codec) {
> +    lsx_fail_errno(ft, SOX_EHDR, "%s", msg);
> +    return SOX_EOF;
> +  }
>    ft->encoding.bits_per_sample = WavpackGetBytesPerSample(p->codec) << 3;
>    ft->signal.channels   = WavpackGetNumChannels(p->codec);
>    if (WavpackGetSampleRate(p->codec) && ft->signal.rate && ft->signal.rate 
> != WavpackGetSampleRate(p->codec))
> @@ -108,6 +112,10 @@ static int start_write(sox_format_t * ft)
>    uint64_t size64;
>
>    p->codec = WavpackOpenFileOutput(ft_write_b_buf, ft, NULL);
> +  if (!p->codec) {
> +    lsx_fail_errno(ft, SOX_ENOMEM, "WavPack error creating output instance");
> +    return SOX_EOF;
> +  }
>    memset(&config, 0, sizeof(config));
>    config.bytes_per_sample  = ft->encoding.bits_per_sample >> 3;
>    config.bits_per_sample   = ft->encoding.bits_per_sample;
> -- 
> EW

Seems OK.

-- 
Måns Rullgård

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
SoX-devel mailing list
SoX-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sox-devel

Reply via email to