Commit 2ab823d4 authored by Clément Bœsch's avatar Clément Bœsch

Merge commit 'd68fb147'

* commit 'd68fb147':
  mjpegdec: Properly fail on malloc failure
Merged-by: 's avatarClément Bœsch <u@pkh.me>
parents 63ac806c d68fb147
......@@ -1876,34 +1876,35 @@ static int mjpeg_decode_com(MJpegDecodeContext *s)
{
int len = get_bits(&s->gb, 16);
if (len >= 2 && 8 * len - 16 <= get_bits_left(&s->gb)) {
int i;
char *cbuf = av_malloc(len - 1);
if (cbuf) {
int i;
for (i = 0; i < len - 2; i++)
cbuf[i] = get_bits(&s->gb, 8);
if (i > 0 && cbuf[i - 1] == '\n')
cbuf[i - 1] = 0;
else
cbuf[i] = 0;
if (!cbuf)
return AVERROR(ENOMEM);
if (s->avctx->debug & FF_DEBUG_PICT_INFO)
av_log(s->avctx, AV_LOG_INFO, "comment: '%s'\n", cbuf);
/* buggy avid, it puts EOI only at every 10th frame */
if (!strncmp(cbuf, "AVID", 4)) {
parse_avid(s, cbuf, len);
} else if (!strcmp(cbuf, "CS=ITU601"))
s->cs_itu601 = 1;
else if ((!strncmp(cbuf, "Intel(R) JPEG Library, version 1", 32) && s->avctx->codec_tag) ||
(!strncmp(cbuf, "Metasoft MJPEG Codec", 20)))
s->flipped = 1;
else if (!strcmp(cbuf, "MULTISCOPE II")) {
s->avctx->sample_aspect_ratio = (AVRational) { 1, 2 };
s->multiscope = 2;
}
for (i = 0; i < len - 2; i++)
cbuf[i] = get_bits(&s->gb, 8);
if (i > 0 && cbuf[i - 1] == '\n')
cbuf[i - 1] = 0;
else
cbuf[i] = 0;
av_free(cbuf);
if (s->avctx->debug & FF_DEBUG_PICT_INFO)
av_log(s->avctx, AV_LOG_INFO, "comment: '%s'\n", cbuf);
/* buggy avid, it puts EOI only at every 10th frame */
if (!strncmp(cbuf, "AVID", 4)) {
parse_avid(s, cbuf, len);
} else if (!strcmp(cbuf, "CS=ITU601"))
s->cs_itu601 = 1;
else if ((!strncmp(cbuf, "Intel(R) JPEG Library, version 1", 32) && s->avctx->codec_tag) ||
(!strncmp(cbuf, "Metasoft MJPEG Codec", 20)))
s->flipped = 1;
else if (!strcmp(cbuf, "MULTISCOPE II")) {
s->avctx->sample_aspect_ratio = (AVRational) { 1, 2 };
s->multiscope = 2;
}
av_free(cbuf);
}
return 0;
......@@ -2114,8 +2115,11 @@ int ff_mjpeg_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
else if (start_code >= APP0 && start_code <= APP15)
mjpeg_decode_app(s);
/* Comment */
else if (start_code == COM)
mjpeg_decode_com(s);
else if (start_code == COM) {
ret = mjpeg_decode_com(s);
if (ret < 0)
return ret;
}
ret = -1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment