mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 20:21:24 +00:00
audiofxbasefirfilter: do not try to alloc really large buffers
When nsamples_out is larger than nsamples_in, using unsigned ints lead to a overflow and the resulting value is wrong and way too large for allocating a buffer. Use signed integers and returning immediatelly when that happens.
This commit is contained in:
parent
362785df88
commit
173be1422c
1 changed files with 2 additions and 2 deletions
|
@ -603,7 +603,7 @@ gst_audio_fx_base_fir_filter_push_residue (GstAudioFXBaseFIRFilter * self)
|
||||||
gint rate = GST_AUDIO_FILTER_CAST (self)->format.rate;
|
gint rate = GST_AUDIO_FILTER_CAST (self)->format.rate;
|
||||||
gint channels = GST_AUDIO_FILTER_CAST (self)->format.channels;
|
gint channels = GST_AUDIO_FILTER_CAST (self)->format.channels;
|
||||||
gint width = GST_AUDIO_FILTER_CAST (self)->format.width / 8;
|
gint width = GST_AUDIO_FILTER_CAST (self)->format.width / 8;
|
||||||
guint outsize, outsamples;
|
gint outsize, outsamples;
|
||||||
guint8 *in, *out;
|
guint8 *in, *out;
|
||||||
|
|
||||||
if (channels == 0 || rate == 0 || self->nsamples_in == 0) {
|
if (channels == 0 || rate == 0 || self->nsamples_in == 0) {
|
||||||
|
@ -616,7 +616,7 @@ gst_audio_fx_base_fir_filter_push_residue (GstAudioFXBaseFIRFilter * self)
|
||||||
/* Calculate the number of samples and their memory size that
|
/* Calculate the number of samples and their memory size that
|
||||||
* should be pushed from the residue */
|
* should be pushed from the residue */
|
||||||
outsamples = self->nsamples_in - (self->nsamples_out - self->latency);
|
outsamples = self->nsamples_in - (self->nsamples_out - self->latency);
|
||||||
if (outsamples == 0) {
|
if (outsamples <= 0) {
|
||||||
self->buffer_fill = 0;
|
self->buffer_fill = 0;
|
||||||
g_free (self->buffer);
|
g_free (self->buffer);
|
||||||
self->buffer = NULL;
|
self->buffer = NULL;
|
||||||
|
|
Loading…
Reference in a new issue