54 lines
2.4 KiB
Diff
54 lines
2.4 KiB
Diff
diff -up libsndfile-1.0.28/src/ogg.c.cve-2024-50612prereq libsndfile-1.0.28/src/ogg.c
|
|
--- libsndfile-1.0.28/src/ogg.c.cve-2024-50612prereq 2017-04-01 09:18:02.000000000 +0200
|
|
+++ libsndfile-1.0.28/src/ogg.c 2024-11-25 23:46:59.292296272 +0100
|
|
@@ -45,6 +45,16 @@ static int ogg_stream_classify (SF_PRIVA
|
|
static int ogg_page_classify (SF_PRIVATE * psf, const ogg_page * og) ;
|
|
|
|
int
|
|
+ogg_write_page (SF_PRIVATE *psf, ogg_page *page)
|
|
+{ int bytes ;
|
|
+
|
|
+ bytes = psf_fwrite (page->header, 1, page->header_len, psf) ;
|
|
+ bytes += psf_fwrite (page->body, 1, page->body_len, psf) ;
|
|
+
|
|
+ return bytes == page->header_len + page->body_len ;
|
|
+} /* ogg_write_page */
|
|
+
|
|
+int
|
|
ogg_open (SF_PRIVATE *psf)
|
|
{ OGG_PRIVATE* odata = calloc (1, sizeof (OGG_PRIVATE)) ;
|
|
sf_count_t pos = psf_ftell (psf) ;
|
|
diff -up libsndfile-1.0.28/src/ogg_vorbis.c.cve-2024-50612prereq libsndfile-1.0.28/src/ogg_vorbis.c
|
|
--- libsndfile-1.0.28/src/ogg_vorbis.c.cve-2024-50612prereq 2017-04-01 09:18:02.000000000 +0200
|
|
+++ libsndfile-1.0.28/src/ogg_vorbis.c 2024-11-25 23:49:55.084077011 +0100
|
|
@@ -423,8 +423,7 @@ vorbis_write_header (SF_PRIVATE *psf, in
|
|
* audio data will start on a new page, as per spec
|
|
*/
|
|
while ((result = ogg_stream_flush (&odata->ostream, &odata->opage)) != 0)
|
|
- { psf_fwrite (odata->opage.header, 1, odata->opage.header_len, psf) ;
|
|
- psf_fwrite (odata->opage.body, 1, odata->opage.body_len, psf) ;
|
|
+ { ogg_write_page (psf, &odata->opage) ;
|
|
} ;
|
|
}
|
|
|
|
@@ -463,8 +462,7 @@ vorbis_close (SF_PRIVATE *psf)
|
|
while (!odata->eos)
|
|
{ int result = ogg_stream_pageout (&odata->ostream, &odata->opage) ;
|
|
if (result == 0) break ;
|
|
- psf_fwrite (odata->opage.header, 1, odata->opage.header_len, psf) ;
|
|
- psf_fwrite (odata->opage.body, 1, odata->opage.body_len, psf) ;
|
|
+ ogg_write_page (psf, &odata->opage) ;
|
|
|
|
/* this could be set above, but for illustrative purposes, I do
|
|
it here (to show that vorbis does know where the stream ends) */
|
|
@@ -778,8 +776,7 @@ vorbis_write_samples (SF_PRIVATE *psf, O
|
|
{ int result = ogg_stream_pageout (&odata->ostream, &odata->opage) ;
|
|
if (result == 0)
|
|
break ;
|
|
- psf_fwrite (odata->opage.header, 1, odata->opage.header_len, psf) ;
|
|
- psf_fwrite (odata->opage.body, 1, odata->opage.body_len, psf) ;
|
|
+ ogg_write_page (psf, &odata->opage) ;
|
|
|
|
/* This could be set above, but for illustrative purposes, I do
|
|
** it here (to show that vorbis does know where the stream ends) */
|