diff options
author | drochner <drochner@pkgsrc.org> | 2008-01-07 17:34:37 +0000 |
---|---|---|
committer | drochner <drochner@pkgsrc.org> | 2008-01-07 17:34:37 +0000 |
commit | 6ab39ca497611b49815ebdd29803ba0bf86ea5b8 (patch) | |
tree | b69cb97b858704e7777ae1ba0bab8d31dae79309 | |
parent | 6cf0f6c49c955c2b6b515f292508429d4160d2c2 (diff) | |
download | pkgsrc-6ab39ca497611b49815ebdd29803ba0bf86ea5b8.tar.gz |
fix CVE-2007-4974 (buffer overflow), patch from Gentoo
bump PKGREVISION
-rw-r--r-- | audio/libsndfile/Makefile | 4 | ||||
-rw-r--r-- | audio/libsndfile/distinfo | 3 | ||||
-rw-r--r-- | audio/libsndfile/patches/patch-ba | 40 |
3 files changed, 44 insertions, 3 deletions
diff --git a/audio/libsndfile/Makefile b/audio/libsndfile/Makefile index 3a68d84b053..ae1bdc7f814 100644 --- a/audio/libsndfile/Makefile +++ b/audio/libsndfile/Makefile @@ -1,7 +1,7 @@ -# $NetBSD: Makefile,v 1.43 2007/11/04 16:00:02 agc Exp $ +# $NetBSD: Makefile,v 1.44 2008/01/07 17:34:37 drochner Exp $ DISTNAME= libsndfile-1.0.17 -PKGREVISION= 1 +PKGREVISION= 2 CATEGORIES= audio MASTER_SITES= http://www.mega-nerd.com/libsndfile/ diff --git a/audio/libsndfile/distinfo b/audio/libsndfile/distinfo index 0a6c997ea71..ac28c43f276 100644 --- a/audio/libsndfile/distinfo +++ b/audio/libsndfile/distinfo @@ -1,4 +1,4 @@ -$NetBSD: distinfo,v 1.22 2007/01/07 15:02:16 wiz Exp $ +$NetBSD: distinfo,v 1.23 2008/01/07 17:34:37 drochner Exp $ SHA1 (libsndfile-1.0.17+flac-1.1.3.patch.bz2) = 10e0d19dfc8cf2a6bf499e0fa0d1ab17dca4c519 RMD160 (libsndfile-1.0.17+flac-1.1.3.patch.bz2) = fc6e6f03069c1ad8ee43f600f6ac2aa6e97bb1f5 @@ -14,3 +14,4 @@ SHA1 (patch-ae) = 628700514d3d2e6e12abb182c697311a233c1bd9 SHA1 (patch-af) = 9ac0dd446a2f24c2d39e20063489a3b778fcda36 SHA1 (patch-ag) = 10d0fcda9377fc6afa2dce9e4782f49889a4f4a3 SHA1 (patch-ah) = 8c936316ca1191f8893579a562ff705c8dde6f92 +SHA1 (patch-ba) = 92ec08d4e021f121d2255760d601625df71e3805 diff --git a/audio/libsndfile/patches/patch-ba b/audio/libsndfile/patches/patch-ba new file mode 100644 index 00000000000..7837bf097f5 --- /dev/null +++ b/audio/libsndfile/patches/patch-ba @@ -0,0 +1,40 @@ +$NetBSD: patch-ba,v 1.1 2008/01/07 17:34:37 drochner Exp $ + +--- src/flac.c.orig 2008-01-03 17:13:00.000000000 +0100 ++++ src/flac.c +@@ -57,7 +57,7 @@ flac_open (SF_PRIVATE *psf) + ** Private static functions. + */ + +-#define ENC_BUFFER_SIZE 4096 ++#define ENC_BUFFER_SIZE 8192 + + typedef enum + { PFLAC_PCM_SHORT = 0, +@@ -202,6 +202,17 @@ flac_buffer_copy (SF_PRIVATE *psf) + const FLAC__int32* const *buffer = pflac->wbuffer ; + unsigned i = 0, j, offset ; + ++ /* ++ ** frame->header.blocksize is variable and we're using a constant blocksize ++ ** of FLAC__MAX_BLOCK_SIZE. ++ ** Check our assumptions here. ++ */ ++ if (frame->header.blocksize > FLAC__MAX_BLOCK_SIZE) ++ { psf_log_printf (psf, "Ooops : frame->header.blocksize (%d) > FLAC__MAX_BLOCK_SIZE (%d)\n", __func__, __LINE__, frame->header.blocksize, FLAC__MAX_BLOCK_SIZE) ; ++ psf->error = SFE_INTERNAL ; ++ return 0 ; ++ } ; ++ + if (pflac->ptr == NULL) + { /* + ** Not sure why this code is here and not elsewhere. +@@ -210,7 +221,7 @@ flac_buffer_copy (SF_PRIVATE *psf) + pflac->bufferbackup = SF_TRUE ; + for (i = 0 ; i < frame->header.channels ; i++) + { if (pflac->rbuffer [i] == NULL) +- pflac->rbuffer [i] = calloc (frame->header.blocksize, sizeof (FLAC__int32)) ; ++ pflac->rbuffer [i] = calloc (FLAC__MAX_BLOCK_SIZE, sizeof (FLAC__int32)) ; + memcpy (pflac->rbuffer [i], buffer [i], frame->header.blocksize * sizeof (FLAC__int32)) ; + } ; + pflac->wbuffer = (const FLAC__int32* const*) pflac->rbuffer ; |