avformat/oggparsevorbis: use the base64 decode size macro
authorJames Almer <jamrial@gmail.com>
Thu, 16 Jun 2016 22:10:42 +0000 (19:10 -0300)
committerJames Almer <jamrial@gmail.com>
Tue, 21 Jun 2016 02:04:35 +0000 (23:04 -0300)
Allocate the memory needed for the decoded data rather than the
encoded data.

Signed-off-by: James Almer <jamrial@gmail.com>
libavformat/oggparsevorbis.c

index a8cd6c9..c168718 100644 (file)
@@ -152,8 +152,8 @@ int ff_vorbis_comment(AVFormatContext *as, AVDictionary **m,
              * recommended way of embedding cover art within VorbisComments."
              */
             if (!strcmp(tt, "METADATA_BLOCK_PICTURE") && parse_picture) {
-                int ret;
-                char *pict = av_malloc(vl);
+                int ret, len = AV_BASE64_DECODE_SIZE(vl);
+                char *pict = av_malloc(len);
 
                 if (!pict) {
                     av_log(as, AV_LOG_WARNING, "out-of-memory error. Skipping cover art block.\n");
@@ -161,7 +161,7 @@ int ff_vorbis_comment(AVFormatContext *as, AVDictionary **m,
                     av_freep(&ct);
                     continue;
                 }
-                if ((ret = av_base64_decode(pict, ct, vl)) > 0)
+                if ((ret = av_base64_decode(pict, ct, len)) > 0)
                     ret = ff_flac_parse_picture(as, pict, ret);
                 av_freep(&tt);
                 av_freep(&ct);