summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrochner <drochner@pkgsrc.org>2012-12-19 14:58:33 +0000
committerdrochner <drochner@pkgsrc.org>2012-12-19 14:58:33 +0000
commit4c7a79ebbd3eb15354f449619fcf700f97097d16 (patch)
tree3a0a9e25a1ceb8e779770d33afea651b66b815b4
parent0536734885dbea517c2499bdbb40393884892de3 (diff)
downloadpkgsrc-4c7a79ebbd3eb15354f449619fcf700f97097d16.tar.gz
add patch from upstream to fix possible memory allocation problems
in the SWF demuxer, fixes SA51464 originally (wrongly) rteported against vlc bump PKGREV
-rw-r--r--multimedia/ffmpeg/Makefile4
-rw-r--r--multimedia/ffmpeg/distinfo3
-rw-r--r--multimedia/ffmpeg/patches/patch-SA5146485
3 files changed, 90 insertions, 2 deletions
diff --git a/multimedia/ffmpeg/Makefile b/multimedia/ffmpeg/Makefile
index 640d561a1d3..f969afe8152 100644
--- a/multimedia/ffmpeg/Makefile
+++ b/multimedia/ffmpeg/Makefile
@@ -1,7 +1,9 @@
-# $NetBSD: Makefile,v 1.96 2012/12/19 11:59:35 jperkin Exp $
+# $NetBSD: Makefile,v 1.97 2012/12/19 14:58:33 drochner Exp $
PKGNAME= ffmpeg-20121209.${DISTVERSION}
+PKGREVISION= 1
+
MAINTAINER= pkgsrc-users@NetBSD.org
HOMEPAGE= http://ffmpeg.mplayerhq.hu/
COMMENT= Decoding, encoding and streaming software
diff --git a/multimedia/ffmpeg/distinfo b/multimedia/ffmpeg/distinfo
index d646f7212fd..1e4c7d4234c 100644
--- a/multimedia/ffmpeg/distinfo
+++ b/multimedia/ffmpeg/distinfo
@@ -1,8 +1,9 @@
-$NetBSD: distinfo,v 1.61 2012/12/16 13:43:10 wiz Exp $
+$NetBSD: distinfo,v 1.62 2012/12/19 14:58:33 drochner Exp $
SHA1 (ffmpeg-1.0.1.tar.bz2) = 007465d01dcd4cae973285f89f5c6c500602a3ec
RMD160 (ffmpeg-1.0.1.tar.bz2) = 363ba32002ed79def6d0f160975b751d15818c1e
Size (ffmpeg-1.0.1.tar.bz2) = 6446587 bytes
+SHA1 (patch-SA51464) = ffafc874ef3313c1228d0bba1bae7f327bec7b9c
SHA1 (patch-aa) = 43f68708e26723ec2e523578090d13bc79014066
SHA1 (patch-ac) = 1c1c4f086328216f5d0cd9339171efa22065259a
SHA1 (patch-ap) = 0ea32afb145b55f0186fb14b1b07568d7442ddf3
diff --git a/multimedia/ffmpeg/patches/patch-SA51464 b/multimedia/ffmpeg/patches/patch-SA51464
new file mode 100644
index 00000000000..d5a0c39cf52
--- /dev/null
+++ b/multimedia/ffmpeg/patches/patch-SA51464
@@ -0,0 +1,85 @@
+$NetBSD: patch-SA51464,v 1.1 2012/12/19 14:58:33 drochner Exp $
+
+see https://trac.videolan.org/vlc/ticket/7860
+
+--- libavformat/swfdec.c.orig 2012-12-03 21:17:35.000000000 +0000
++++ libavformat/swfdec.c
+@@ -153,6 +153,10 @@ static int swf_read_packet(AVFormatConte
+ tag = get_swf_tag(pb, &len);
+ if (tag < 0)
+ return tag;
++ if (len < 0) {
++ av_log(s, AV_LOG_ERROR, "invalid tag length: %d\n", len);
++ return AVERROR_INVALIDDATA;
++ }
+ if (tag == TAG_VIDEOSTREAM) {
+ int ch_id = avio_rl16(pb);
+ len -= 2;
+@@ -208,7 +212,10 @@ static int swf_read_packet(AVFormatConte
+ st = s->streams[i];
+ if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO && st->id == ch_id) {
+ frame = avio_rl16(pb);
+- if ((res = av_get_packet(pb, pkt, len-2)) < 0)
++ len -= 2;
++ if (len <= 0)
++ goto skip;
++ if ((res = av_get_packet(pb, pkt, len)) < 0)
+ return res;
+ pkt->pos = pos;
+ pkt->pts = frame;
+@@ -220,17 +227,22 @@ static int swf_read_packet(AVFormatConte
+ for (i = 0; i < s->nb_streams; i++) {
+ st = s->streams[i];
+ if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO && st->id == -1) {
+- if (st->codec->codec_id == AV_CODEC_ID_MP3) {
+- avio_skip(pb, 4);
+- if ((res = av_get_packet(pb, pkt, len-4)) < 0)
+- return res;
+- } else { // ADPCM, PCM
+- if ((res = av_get_packet(pb, pkt, len)) < 0)
+- return res;
+- }
+- pkt->pos = pos;
+- pkt->stream_index = st->index;
+- return pkt->size;
++ if (st->codec->codec_id == AV_CODEC_ID_MP3) {
++ avio_skip(pb, 4);
++ len -= 4;
++ if (len <= 0)
++ goto skip;
++ if ((res = av_get_packet(pb, pkt, len)) < 0)
++ return res;
++ } else { // ADPCM, PCM
++ if (len <= 0)
++ goto skip;
++ if ((res = av_get_packet(pb, pkt, len)) < 0)
++ return res;
++ }
++ pkt->pos = pos;
++ pkt->stream_index = st->index;
++ return pkt->size;
+ }
+ }
+ } else if (tag == TAG_JPEG2) {
+@@ -250,7 +262,10 @@ static int swf_read_packet(AVFormatConte
+ st = vst;
+ }
+ avio_rl16(pb); /* BITMAP_ID */
+- if ((res = av_new_packet(pkt, len-2)) < 0)
++ len -= 2;
++ if (len < 4)
++ goto skip;
++ if ((res = av_new_packet(pkt, len)) < 0)
+ return res;
+ avio_read(pb, pkt->data, 4);
+ if (AV_RB32(pkt->data) == 0xffd8ffd9 ||
+@@ -267,6 +282,9 @@ static int swf_read_packet(AVFormatConte
+ return pkt->size;
+ }
+ skip:
++ if(len<0)
++ av_log(s, AV_LOG_WARNING, "Cliping len %d\n", len);
++ len = FFMAX(0, len);
+ avio_skip(pb, len);
+ }
+ }