summaryrefslogtreecommitdiff
path: root/libavformat/au.c
diff options
context:
space:
mode:
authorJustin Ruggles <justin.ruggles@gmail.com>2012-12-23 13:26:44 -0500
committerJustin Ruggles <justin.ruggles@gmail.com>2013-01-09 11:52:57 -0500
commitfb48f825e33c15146b8ce4e5258332ebc4a9b5ea (patch)
treec4477514d5188cca7404aeee2ca1d068fc407a38 /libavformat/au.c
parent2613de88051818abafccb98646394341887acb3a (diff)
au: do not arbitrarily limit channel count
Nothing in the AU specification sets a limit on channel count. We only need to avoid an overflow in the packet size calculation.
Diffstat (limited to 'libavformat/au.c')
-rw-r--r--libavformat/au.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/libavformat/au.c b/libavformat/au.c
index fb35a9a613..c429ce100d 100644
--- a/libavformat/au.c
+++ b/libavformat/au.c
@@ -57,6 +57,8 @@ static int au_probe(AVProbeData *p)
return 0;
}
+#define BLOCK_SIZE 1024
+
/* au input */
static int au_read_header(AVFormatContext *s)
{
@@ -92,7 +94,7 @@ static int au_read_header(AVFormatContext *s)
return AVERROR_PATCHWELCOME;
}
- if (channels == 0 || channels > 64) {
+ if (channels == 0 || channels >= INT_MAX / (BLOCK_SIZE * bps >> 3)) {
av_log(s, AV_LOG_ERROR, "Invalid number of channels %d\n", channels);
return AVERROR_INVALIDDATA;
}
@@ -117,8 +119,6 @@ static int au_read_header(AVFormatContext *s)
return 0;
}
-#define BLOCK_SIZE 1024
-
static int au_read_packet(AVFormatContext *s,
AVPacket *pkt)
{