Hello community,

here is the log from the commit of package libsndfile for openSUSE:Factory 
checked in at 2017-05-18 20:45:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libsndfile (Old)
 and      /work/SRC/openSUSE:Factory/.libsndfile.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libsndfile"

Thu May 18 20:45:45 2017 rev:50 rq:492489 version:1.0.28

Changes:
--------
--- /work/SRC/openSUSE:Factory/libsndfile/libsndfile.changes    2017-04-17 
10:24:07.616774697 +0200
+++ /work/SRC/openSUSE:Factory/.libsndfile.new/libsndfile.changes       
2017-05-18 20:45:52.755928761 +0200
@@ -1,0 +2,9 @@
+Tue May  2 14:06:40 CEST 2017 - ti...@suse.de
+
+- Fix FLAC buffer overflows (CVE-2017-8361 CVE-2017-8363
+  CVE-2017-8365 CVE-2017-8362 bsc#1036944 bsc#1036945 bsc#1036946
+  bsc#1036943):
+  0001-FLAC-Fix-a-buffer-read-overrun.patch
+  0002-src-flac.c-Fix-a-buffer-read-overflow.patch
+
+-------------------------------------------------------------------

New:
----
  0001-FLAC-Fix-a-buffer-read-overrun.patch
  0002-src-flac.c-Fix-a-buffer-read-overflow.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libsndfile.spec ++++++
--- /var/tmp/diff_new_pack.tUsjbF/_old  2017-05-18 20:45:55.019609298 +0200
+++ /var/tmp/diff_new_pack.tUsjbF/_new  2017-05-18 20:45:55.023608733 +0200
@@ -28,7 +28,11 @@
 Source1:        
http://www.mega-nerd.com/%{name}/files/%{name}-%{version}.tar.gz.asc
 Source2:        %{name}.keyring
 Source3:        baselibs.conf
-Patch2:         sndfile-ocloexec.patch
+# PATCH-FIX-UPSTREAM
+Patch1:         0001-FLAC-Fix-a-buffer-read-overrun.patch
+Patch2:         0002-src-flac.c-Fix-a-buffer-read-overflow.patch
+# PATCH-FIX-OPENSUSE
+Patch100:       sndfile-ocloexec.patch
 BuildRequires:  alsa-devel
 BuildRequires:  flac-devel
 BuildRequires:  gcc-c++
@@ -74,7 +78,9 @@
 
 %prep
 %setup -q
+%patch1 -p1
 %patch2 -p1
+%patch100 -p1
 
 %build
 %define warn_flags -W -Wall -Wstrict-prototypes -Wpointer-arith 
-Wno-unused-parameter

++++++ 0001-FLAC-Fix-a-buffer-read-overrun.patch ++++++
>From fd0484aba8e51d16af1e3a880f9b8b857b385eb3 Mon Sep 17 00:00:00 2001
From: Erik de Castro Lopo <er...@mega-nerd.com>
Date: Wed, 12 Apr 2017 19:45:30 +1000
Subject: [PATCH] FLAC: Fix a buffer read overrun
References: CVE-2017-8361 CVE-2017-8363 CVE-2017-8365 bsc#1036944 bsc#1036945 
bsc#1036946

Buffer read overrun occurs when reading a FLAC file that switches
from 2 channels to one channel mid-stream. Only option is to
abort the read.

Closes: https://github.com/erikd/libsndfile/issues/230

---
 src/common.h  |    1 +
 src/flac.c    |   13 +++++++++++++
 src/sndfile.c |    1 +
 3 files changed, 15 insertions(+)

--- a/src/common.h
+++ b/src/common.h
@@ -725,6 +725,7 @@ enum
        SFE_FLAC_INIT_DECODER,
        SFE_FLAC_LOST_SYNC,
        SFE_FLAC_BAD_SAMPLE_RATE,
+       SFE_FLAC_CHANNEL_COUNT_CHANGED,
        SFE_FLAC_UNKOWN_ERROR,
 
        SFE_WVE_NOT_WVE,
--- a/src/flac.c
+++ b/src/flac.c
@@ -435,6 +435,19 @@ sf_flac_meta_callback (const FLAC__Strea
 
        switch (metadata->type)
        {       case FLAC__METADATA_TYPE_STREAMINFO :
+                       if (psf->sf.channels > 0 && psf->sf.channels != (int) 
metadata->data.stream_info.channels)
+                       {       psf_log_printf (psf, "Error: FLAC stream 
changed from %d to %d channels\n"
+                                                                       
"Nothing to be but to error out.\n" ,
+                                                                       
psf->sf.channels, metadata->data.stream_info.channels) ;
+                               psf->error = SFE_FLAC_CHANNEL_COUNT_CHANGED ;
+                               return ;
+                               } ;
+
+                       if (psf->sf.channels > 0 && psf->sf.samplerate != (int) 
metadata->data.stream_info.sample_rate)
+                       {       psf_log_printf (psf, "Warning: FLAC stream 
changed sample rates from %d to %d.\n"
+                                                                       
"Carrying on as if nothing happened.",
+                                                                       
psf->sf.samplerate, metadata->data.stream_info.sample_rate) ;
+                               } ;
                        psf->sf.channels = metadata->data.stream_info.channels ;
                        psf->sf.samplerate = 
metadata->data.stream_info.sample_rate ;
                        psf->sf.frames = 
metadata->data.stream_info.total_samples ;
--- a/src/sndfile.c
+++ b/src/sndfile.c
@@ -245,6 +245,7 @@ ErrorStruct SndfileErrors [] =
        {       SFE_FLAC_INIT_DECODER   , "Error : problem with initialization 
of the flac decoder." },
        {       SFE_FLAC_LOST_SYNC              , "Error : flac decoder lost 
sync." },
        {       SFE_FLAC_BAD_SAMPLE_RATE, "Error : flac does not support this 
sample rate." },
+       {       SFE_FLAC_CHANNEL_COUNT_CHANGED, "Error : flac channel changed 
mid stream." },
        {       SFE_FLAC_UNKOWN_ERROR   , "Error : unknown error in flac 
decoder." },
 
        {       SFE_WVE_NOT_WVE                 , "Error : not a WVE file." },
++++++ 0002-src-flac.c-Fix-a-buffer-read-overflow.patch ++++++
>From ef1dbb2df1c0e741486646de40bd638a9c4cd808 Mon Sep 17 00:00:00 2001
From: Erik de Castro Lopo <er...@mega-nerd.com>
Date: Fri, 14 Apr 2017 15:19:16 +1000
Subject: [PATCH] src/flac.c: Fix a buffer read overflow
References: CVE-2017-8362 bsc#1036943

A file (generated by a fuzzer) which increased the number of channels
from one frame to the next could cause a read beyond the end of the
buffer provided by libFLAC. Only option is to abort the read.

Closes: https://github.com/erikd/libsndfile/issues/231

---
 src/flac.c |   11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

--- a/src/flac.c
+++ b/src/flac.c
@@ -169,6 +169,14 @@ flac_buffer_copy (SF_PRIVATE *psf)
        const int32_t* const *buffer = pflac->wbuffer ;
        unsigned i = 0, j, offset, channels, len ;
 
+       if (psf->sf.channels != (int) frame->header.channels)
+       {       psf_log_printf (psf, "Error: FLAC frame changed from %d to %d 
channels\n"
+                                                                       
"Nothing to do but to error out.\n" ,
+                                                                       
psf->sf.channels, frame->header.channels) ;
+               psf->error = SFE_FLAC_CHANNEL_COUNT_CHANGED ;
+               return 0 ;
+               } ;
+
        /*
        **      frame->header.blocksize is variable and we're using a constant 
blocksize
        **      of FLAC__MAX_BLOCK_SIZE.
@@ -202,7 +210,6 @@ flac_buffer_copy (SF_PRIVATE *psf)
                return 0 ;
                } ;
 
-
        len = SF_MIN (pflac->len, frame->header.blocksize) ;
 
        if (pflac->remain % channels != 0)
@@ -437,7 +444,7 @@ sf_flac_meta_callback (const FLAC__Strea
        {       case FLAC__METADATA_TYPE_STREAMINFO :
                        if (psf->sf.channels > 0 && psf->sf.channels != (int) 
metadata->data.stream_info.channels)
                        {       psf_log_printf (psf, "Error: FLAC stream 
changed from %d to %d channels\n"
-                                                                       
"Nothing to be but to error out.\n" ,
+                                                                       
"Nothing to do but to error out.\n" ,
                                                                        
psf->sf.channels, metadata->data.stream_info.channels) ;
                                psf->error = SFE_FLAC_CHANNEL_COUNT_CHANGED ;
                                return ;



Reply via email to