diff options
author | Jun Zhao <barryjzhao@tencent.com> | 2019-04-14 23:22:25 +0800 |
---|---|---|
committer | Jun Zhao <barryjzhao@tencent.com> | 2019-04-22 23:24:42 +0800 |
commit | 8d3630c5402fdda2889fe4f74f7dcdd50ebca654 (patch) | |
tree | f10ae46c445c9d324d72429b4fd67d709a9f0285 | |
parent | eeca67e0232cc18c0a4b7c4bfa7ff4ee709078c2 (diff) | |
download | ffmpeg-8d3630c5402fdda2889fe4f74f7dcdd50ebca654.tar.gz |
lavf/oggparsevorbis: Fix change the case of metadata keys issue
The spec in https://xiph.org/vorbis/doc/v-comment.html states that
the metadata keys are case-insensitive, so don't change the case
and update the fate test case.
Fix #7784
Reviewed-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
-rw-r--r-- | libavformat/oggparsevorbis.c | 9 | ||||
-rw-r--r-- | tests/ref/fate/limited_input_seek | 2 | ||||
-rw-r--r-- | tests/ref/fate/limited_input_seek-copyts | 2 |
3 files changed, 6 insertions, 7 deletions
diff --git a/libavformat/oggparsevorbis.c b/libavformat/oggparsevorbis.c index bcfd246b8d..43f05f928a 100644 --- a/libavformat/oggparsevorbis.c +++ b/libavformat/oggparsevorbis.c @@ -44,7 +44,7 @@ static int ogm_chapter(AVFormatContext *as, uint8_t *key, uint8_t *val) int i, cnum, h, m, s, ms, keylen = strlen(key); AVChapter *chapter = NULL; - if (keylen < 9 || sscanf(key, "CHAPTER%03d", &cnum) != 1) + if (keylen < 9 || av_strncasecmp(key, "CHAPTER", 7) || sscanf(key+7, "%03d", &cnum) != 1) return 0; if (keylen <= 10) { @@ -55,7 +55,7 @@ static int ogm_chapter(AVFormatContext *as, uint8_t *key, uint8_t *val) ms + 1000 * (s + 60 * (m + 60 * h)), AV_NOPTS_VALUE, NULL); av_free(val); - } else if (!strcmp(key + keylen - 4, "NAME")) { + } else if (!av_strcasecmp(key + keylen - 4, "NAME")) { for (i = 0; i < as->nb_chapters; i++) if (as->chapters[i]->id == cnum) { chapter = as->chapters[i]; @@ -91,7 +91,7 @@ int ff_vorbis_comment(AVFormatContext *as, AVDictionary **m, const uint8_t *p = buf; const uint8_t *end = buf + size; int updates = 0; - unsigned n, j; + unsigned n; int s; /* must have vendor_length and user_comment_list_length */ @@ -139,8 +139,7 @@ int ff_vorbis_comment(AVFormatContext *as, AVDictionary **m, return AVERROR(ENOMEM); } - for (j = 0; j < tl; j++) - tt[j] = av_toupper(t[j]); + memcpy(tt, t, tl); tt[tl] = 0; memcpy(ct, v, vl); diff --git a/tests/ref/fate/limited_input_seek b/tests/ref/fate/limited_input_seek index e0c4bf151a..3269dcedcb 100644 --- a/tests/ref/fate/limited_input_seek +++ b/tests/ref/fate/limited_input_seek @@ -1 +1 @@ -20a1bb9a1cfb23c1fe86f14e6065cd95 +ae878bdaec23f36a63d142165fe57f49 diff --git a/tests/ref/fate/limited_input_seek-copyts b/tests/ref/fate/limited_input_seek-copyts index 92790a8b9b..6eeaef8829 100644 --- a/tests/ref/fate/limited_input_seek-copyts +++ b/tests/ref/fate/limited_input_seek-copyts @@ -1 +1 @@ -ec3604b1954ed80de364b8ef491771ce +ffe8a674bdf38e4f650f91963debc654 |