1*4882a593SmuzhiyunFrom 9e4e9224c39195bde8ec14d1295944f713adb79a Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: yuan <ssspeed00@gmail.com>
3*4882a593SmuzhiyunDate: Tue, 20 Apr 2021 16:16:32 +0800
4*4882a593SmuzhiyunSubject: [PATCH] flac: Fix improper buffer reusing (#732)
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunUpstream-Status: Backport [https://github.com/libsndfile/libsndfile/commit/ced91d7b971be6173b604154c39279ce90ad87cc]
7*4882a593SmuzhiyunCVE: CVE-2021-4156
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunSigned-off-by: Martin Jansa <Martin.Jansa@gmail.com>
10*4882a593Smuzhiyun---
11*4882a593Smuzhiyun src/flac.c | 4 ++++
12*4882a593Smuzhiyun 1 file changed, 4 insertions(+)
13*4882a593Smuzhiyun
14*4882a593Smuzhiyundiff --git a/src/flac.c b/src/flac.c
15*4882a593Smuzhiyunindex 64d0172e..e3320450 100644
16*4882a593Smuzhiyun--- a/src/flac.c
17*4882a593Smuzhiyun+++ b/src/flac.c
18*4882a593Smuzhiyun@@ -948,7 +948,11 @@ flac_read_loop (SF_PRIVATE *psf, unsigned len)
19*4882a593Smuzhiyun 	/* Decode some more. */
20*4882a593Smuzhiyun 	while (pflac->pos < pflac->len)
21*4882a593Smuzhiyun 	{	if (FLAC__stream_decoder_process_single (pflac->fsd) == 0)
22*4882a593Smuzhiyun+		{	psf_log_printf (psf, "FLAC__stream_decoder_process_single returned false\n") ;
23*4882a593Smuzhiyun+			/* Current frame is busted, so NULL the pointer. */
24*4882a593Smuzhiyun+			pflac->frame = NULL ;
25*4882a593Smuzhiyun 			break ;
26*4882a593Smuzhiyun+			} ;
27*4882a593Smuzhiyun 		state = FLAC__stream_decoder_get_state (pflac->fsd) ;
28*4882a593Smuzhiyun 		if (state >= FLAC__STREAM_DECODER_END_OF_STREAM)
29*4882a593Smuzhiyun 		{	psf_log_printf (psf, "FLAC__stream_decoder_get_state returned %s\n", FLAC__StreamDecoderStateString [state]) ;
30