summaryrefslogtreecommitdiff
path: root/libavdevice/pulse_audio_dec.c
diff options
context:
space:
mode:
authorMarton Balint <cus@passwd.hu>2021-02-10 00:15:00 +0100
committerMarton Balint <cus@passwd.hu>2021-03-12 23:55:30 +0100
commit104aa921c96f126c49259c946e995679cec3abd6 (patch)
treeb56bac88530d28c917eef3644556a0ac7b3007d2 /libavdevice/pulse_audio_dec.c
parent1a90cf4410a3464c8d749242e23629776f310ee0 (diff)
downloadffmpeg-104aa921c96f126c49259c946e995679cec3abd6.tar.gz
avdevice/pulse_audio_dec: query actual fragment size
Signed-off-by: Marton Balint <cus@passwd.hu>
Diffstat (limited to 'libavdevice/pulse_audio_dec.c')
-rw-r--r--libavdevice/pulse_audio_dec.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/libavdevice/pulse_audio_dec.c b/libavdevice/pulse_audio_dec.c
index 50a3c971ae..6dea332beb 100644
--- a/libavdevice/pulse_audio_dec.c
+++ b/libavdevice/pulse_audio_dec.c
@@ -149,6 +149,7 @@ static av_cold int pulse_read_header(AVFormatContext *s)
pa_buffer_attr attr = { -1 };
pa_channel_map cmap;
+ const pa_buffer_attr *queried_attr;
pa_channel_map_init_extend(&cmap, pd->channels, PA_CHANNEL_MAP_WAVEEX);
@@ -242,6 +243,14 @@ static av_cold int pulse_read_header(AVFormatContext *s)
pa_threaded_mainloop_wait(pd->mainloop);
}
+ /* Query actual fragment size */
+ queried_attr = pa_stream_get_buffer_attr(pd->stream);
+ if (!queried_attr || queried_attr->fragsize > INT_MAX/100) {
+ ret = AVERROR_EXTERNAL;
+ goto unlock_and_fail;
+ }
+ pd->fragment_size = queried_attr->fragsize;
+
pa_threaded_mainloop_unlock(pd->mainloop);
/* take real parameters */