[FFmpeg-devel,V2] lavf/oggparsevorbis: Fix change the case of metadata keys issue

Submitted by Jun Zhao on April 17, 2019, 4:44 a.m.

Details

Message ID 1555476243-14424-2-git-send-email-mypopydev@gmail.com
State Accepted
Commit 8d3630c5402fdda2889fe4f74f7dcdd50ebca654
Headers show

Commit Message

Jun Zhao April 17, 2019, 4:44 a.m.
From: Jun Zhao <barryjzhao@tencent.com>

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

Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
---
 libavformat/oggparsevorbis.c             |    9 ++++-----
 tests/ref/fate/limited_input_seek        |    2 +-
 tests/ref/fate/limited_input_seek-copyts |    2 +-
 3 files changed, 6 insertions(+), 7 deletions(-)

Comments

mypopy@gmail.com April 22, 2019, 12:19 p.m.
On Wed, Apr 17, 2019 at 12:44 PM Jun Zhao <mypopydev@gmail.com> wrote:
>
> From: Jun Zhao <barryjzhao@tencent.com>
>
> 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
>
> Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
> ---
>  libavformat/oggparsevorbis.c             |    9 ++++-----
>  tests/ref/fate/limited_input_seek        |    2 +-
>  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 bcfd246..43f05f9 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 e0c4bf1..3269dce 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 92790a8..6eeaef8 100644
> --- a/tests/ref/fate/limited_input_seek-copyts
> +++ b/tests/ref/fate/limited_input_seek-copyts
> @@ -1 +1 @@
> -ec3604b1954ed80de364b8ef491771ce
> +ffe8a674bdf38e4f650f91963debc654
> --
> 1.7.1
>

Ping?
Derek Buitenhuis April 22, 2019, 2:43 p.m.
On 22/04/2019 13:19, mypopy@gmail.com wrote:
> Ping?
> 

LGTM.

- Derek
mypopy@gmail.com April 23, 2019, 1:41 a.m.
On Mon, Apr 22, 2019 at 10:43 PM Derek Buitenhuis
<derek.buitenhuis@gmail.com> wrote:
>
> On 22/04/2019 13:19, mypopy@gmail.com wrote:
> > Ping?
> >
>
> LGTM.
>
> - Derek
Pushed, Thanks

Patch hide | download patch | download mbox

diff --git a/libavformat/oggparsevorbis.c b/libavformat/oggparsevorbis.c
index bcfd246..43f05f9 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 e0c4bf1..3269dce 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 92790a8..6eeaef8 100644
--- a/tests/ref/fate/limited_input_seek-copyts
+++ b/tests/ref/fate/limited_input_seek-copyts
@@ -1 +1 @@ 
-ec3604b1954ed80de364b8ef491771ce
+ffe8a674bdf38e4f650f91963debc654