demux: acquire lock before calling update_bytes_read

in->byte_level_seeks field is written and modified inside
update_bytes_read at the same time when demux_get_reader_state
is executing, which locks the demux thread mutex.  This results
in a data race, reported by Thread Sanitizer when playing mp3 file
of sufficient long length.
This commit is contained in:
Shreesh Adiga 2021-07-11 18:13:04 +05:30 committed by Dudemanguy
parent be81470f54
commit 8ace8e8790
1 changed files with 2 additions and 2 deletions

View File

@ -4137,10 +4137,10 @@ static void update_cache(struct demux_internal *in)
stream_control(stream, STREAM_CTRL_GET_METADATA, &stream_metadata);
}
update_bytes_read(in);
pthread_mutex_lock(&in->lock);
update_bytes_read(in);
if (do_update)
in->stream_size = stream_size;
if (stream_metadata) {