From: Paul Brossier Date: Wed, 12 Dec 2018 22:25:35 +0000 (+0100) Subject: [ci] avoid read out of bound in sink_vorbis_do_multi, simplify _open X-Git-Url: https://git.aubio.org/?a=commitdiff_plain;h=60314193c914cfbc84cde61faeec17c8c81876fd;p=aubio.git [ci] avoid read out of bound in sink_vorbis_do_multi, simplify _open --- diff --git a/src/io/sink_vorbis.c b/src/io/sink_vorbis.c index 4693de31..3205ad09 100644 --- a/src/io/sink_vorbis.c +++ b/src/io/sink_vorbis.c @@ -106,11 +106,7 @@ uint_t aubio_sink_vorbis_open(aubio_sink_vorbis_t *s) { float quality_mode = .9; - if (s->samplerate == 0 || s->channels == 0) - { - AUBIO_ERR("sink_vorbis: vorbis_encode_init_vbr failed\n"); - return AUBIO_FAIL; - } + if (s->samplerate == 0 || s->channels == 0) return AUBIO_FAIL; s->fid = fopen((const char *)s->path, "wb"); if (!s->fid) return AUBIO_FAIL; @@ -247,6 +243,7 @@ void aubio_sink_vorbis_do_multi(aubio_sink_vorbis_t *s, fmat_t *write_data, uint_t write) { uint_t c, v; + uint_t channels = MIN(s->channels, write_data->height); float **buffer = vorbis_analysis_buffer(&s->vd, (long)write); // fill buffer if (!write) { @@ -255,7 +252,7 @@ void aubio_sink_vorbis_do_multi(aubio_sink_vorbis_t *s, fmat_t *write_data, AUBIO_WRN("sink_vorbis: failed fetching buffer of size %d\n", write); return; } else { - for (c = 0; c < s->channels; c++) { + for (c = 0; c < channels; c++) { for (v = 0; v < write; v++) { buffer[c][v] = write_data->data[c][v]; }