You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-10 06:10:52 +02:00
Merge commit 'd68fb1475856cf93199e2bc4eee3063902c35df7'
* commit 'd68fb1475856cf93199e2bc4eee3063902c35df7': mjpegdec: Properly fail on malloc failure Merged-by: Clément Bœsch <u@pkh.me>
This commit is contained in:
@@ -1876,34 +1876,35 @@ static int mjpeg_decode_com(MJpegDecodeContext *s)
|
|||||||
{
|
{
|
||||||
int len = get_bits(&s->gb, 16);
|
int len = get_bits(&s->gb, 16);
|
||||||
if (len >= 2 && 8 * len - 16 <= get_bits_left(&s->gb)) {
|
if (len >= 2 && 8 * len - 16 <= get_bits_left(&s->gb)) {
|
||||||
|
int i;
|
||||||
char *cbuf = av_malloc(len - 1);
|
char *cbuf = av_malloc(len - 1);
|
||||||
if (cbuf) {
|
if (!cbuf)
|
||||||
int i;
|
return AVERROR(ENOMEM);
|
||||||
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 (s->avctx->debug & FF_DEBUG_PICT_INFO)
|
for (i = 0; i < len - 2; i++)
|
||||||
av_log(s->avctx, AV_LOG_INFO, "comment: '%s'\n", cbuf);
|
cbuf[i] = get_bits(&s->gb, 8);
|
||||||
|
if (i > 0 && cbuf[i - 1] == '\n')
|
||||||
|
cbuf[i - 1] = 0;
|
||||||
|
else
|
||||||
|
cbuf[i] = 0;
|
||||||
|
|
||||||
/* buggy avid, it puts EOI only at every 10th frame */
|
if (s->avctx->debug & FF_DEBUG_PICT_INFO)
|
||||||
if (!strncmp(cbuf, "AVID", 4)) {
|
av_log(s->avctx, AV_LOG_INFO, "comment: '%s'\n", cbuf);
|
||||||
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);
|
/* 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;
|
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)
|
else if (start_code >= APP0 && start_code <= APP15)
|
||||||
mjpeg_decode_app(s);
|
mjpeg_decode_app(s);
|
||||||
/* Comment */
|
/* Comment */
|
||||||
else if (start_code == COM)
|
else if (start_code == COM) {
|
||||||
mjpeg_decode_com(s);
|
ret = mjpeg_decode_com(s);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
ret = -1;
|
ret = -1;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user