diff options
author | Clément Bœsch <u@pkh.me> | 2017-03-19 18:22:53 +0100 |
---|---|---|
committer | Clément Bœsch <u@pkh.me> | 2017-03-19 18:24:35 +0100 |
commit | f4a39ceea0d25a21c9c6e0cc64a0825fd5d84c5b (patch) | |
tree | 7ac4d54f96fb6339dc352f5c4005f1a7be37f494 | |
parent | 206a9fb29cbc399d0f789af714d2371553fb0d65 (diff) | |
parent | 24130234cd9dd733116d17b724ea4c8e12ce097a (diff) | |
download | ffmpeg-f4a39ceea0d25a21c9c6e0cc64a0825fd5d84c5b.tar.gz |
Merge commit '24130234cd9dd733116d17b724ea4c8e12ce097a'
* commit '24130234cd9dd733116d17b724ea4c8e12ce097a':
rtpdec_mpeg4: validate fmtp fields
Merged with fixed log message.
Merged-by: Clément Bœsch <u@pkh.me>
-rw-r--r-- | libavformat/rtpdec_mpeg4.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/libavformat/rtpdec_mpeg4.c b/libavformat/rtpdec_mpeg4.c index 068d378569..994ab49251 100644 --- a/libavformat/rtpdec_mpeg4.c +++ b/libavformat/rtpdec_mpeg4.c @@ -289,11 +289,22 @@ static int parse_fmtp(AVFormatContext *s, for (i = 0; attr_names[i].str; ++i) { if (!av_strcasecmp(attr, attr_names[i].str)) { if (attr_names[i].type == ATTR_NAME_TYPE_INT) { + int val = atoi(value); + if (val > 32) { + av_log(s, AV_LOG_ERROR, + "The %s field size is invalid (%d)\n", + attr, val); + return AVERROR_INVALIDDATA; + } *(int *)((char *)data+ - attr_names[i].offset) = atoi(value); - } else if (attr_names[i].type == ATTR_NAME_TYPE_STR) + attr_names[i].offset) = val; + } else if (attr_names[i].type == ATTR_NAME_TYPE_STR) { + char *val = av_strdup(value); + if (!val) + return AVERROR(ENOMEM); *(char **)((char *)data+ - attr_names[i].offset) = av_strdup(value); + attr_names[i].offset) = val; + } } } } |