Date: Wed, 9 Sep 2015 20:07:02 +0000 (UTC) From: Christian Weisgerber <naddy@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r396532 - in head/audio/vorbis-tools: . files Message-ID: <201509092007.t89K72aS070457@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: naddy Date: Wed Sep 9 20:07:01 2015 New Revision: 396532 URL: https://svnweb.freebsd.org/changeset/ports/396532 Log: Fix oggenc buffer overflow. PR: 202941 Submitted by: junovitch Obtained from: https://trac.xiph.org/ticket/2212 Security: a35f415d-572a-11e5-b0a4-f8b156b6dcc8 Security: CVE-2015-6749 MFH: 2015Q3 Added: head/audio/vorbis-tools/files/patch-oggenc_audio.c (contents, props changed) Modified: head/audio/vorbis-tools/Makefile Modified: head/audio/vorbis-tools/Makefile ============================================================================== --- head/audio/vorbis-tools/Makefile Wed Sep 9 19:53:44 2015 (r396531) +++ head/audio/vorbis-tools/Makefile Wed Sep 9 20:07:01 2015 (r396532) @@ -3,7 +3,7 @@ PORTNAME= vorbis-tools PORTVERSION= 1.4.0 -PORTREVISION= 8 +PORTREVISION= 9 PORTEPOCH= 3 CATEGORIES= audio MASTER_SITES= http://downloads.xiph.org/releases/vorbis/ Added: head/audio/vorbis-tools/files/patch-oggenc_audio.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/audio/vorbis-tools/files/patch-oggenc_audio.c Wed Sep 9 20:07:01 2015 (r396532) @@ -0,0 +1,26 @@ +--- oggenc/audio.c.orig 2010-03-24 08:27:14 UTC ++++ oggenc/audio.c +@@ -245,8 +245,8 @@ static int aiff_permute_matrix[6][6] = + int aiff_open(FILE *in, oe_enc_opt *opt, unsigned char *buf, int buflen) + { + int aifc; /* AIFC or AIFF? */ +- unsigned int len; +- unsigned char *buffer; ++ unsigned int len, readlen; ++ unsigned char buffer[22]; + unsigned char buf2[8]; + aiff_fmt format; + aifffile *aiff = malloc(sizeof(aifffile)); +@@ -269,9 +269,9 @@ int aiff_open(FILE *in, oe_enc_opt *opt, + return 0; /* Weird common chunk */ + } + +- buffer = alloca(len); +- +- if(fread(buffer,1,len,in) < len) ++ readlen = len < sizeof(buffer) ? len : sizeof(buffer); ++ if(fread(buffer,1,readlen,in) < readlen || ++ (len > readlen && !seek_forward(in, len-readlen))) + { + fprintf(stderr, _("Warning: Unexpected EOF in reading AIFF header\n")); + return 0;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201509092007.t89K72aS070457>