On Fri, Jul 22, 2016 at 05:59:09PM -0700, kod...@gmail.com wrote: > From: Chris Moeller <kod...@gmail.com> > > --- > libavformat/id3v2.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 44 insertions(+) > > diff --git a/libavformat/id3v2.c b/libavformat/id3v2.c > index 46b9394..c38c610 100644 > --- a/libavformat/id3v2.c > +++ b/libavformat/id3v2.c > @@ -400,6 +400,47 @@ error: > } > > /** > + * Parse a comment tag. > + */ > +static void read_comm(AVFormatContext *s, AVIOContext *pb, int taglen, > + AVDictionary **metadata) > +{ > + const char *key = "comment"; > + uint8_t *dst; > + int encoding, dict_flags = AV_DICT_DONT_OVERWRITE | > AV_DICT_DONT_STRDUP_VAL; > + int language; > + > + if (taglen < 4) > + return; > + > + encoding = avio_r8(pb); > + taglen--; > + > + language = avio_rl24(pb); > + taglen -= 3; > + > + if (decode_str(s, pb, encoding, &dst, &taglen) < 0) { > + av_log(s, AV_LOG_ERROR, "Error reading comment frame, skipped\n"); > + return; > + } > + > + if (dst && dst[0]) { > + key = (const char *) dst; > + dict_flags |= AV_DICT_DONT_STRDUP_KEY; > + } > + > + if (decode_str(s, pb, encoding, &dst, &taglen) < 0) { > + av_log(s, AV_LOG_ERROR, "Error reading comment frame, skipped\n"); > + if (dict_flags & AV_DICT_DONT_STRDUP_KEY) > + av_freep((void*)&key); > + return; > + } > + > + if (dst) > + av_dict_set(metadata, key, (const char *) dst, dict_flags); > +} > + > +/** > * Parse GEOB tag into a ID3v2ExtraMetaGEOB struct. > */ > static void read_geobtag(AVFormatContext *s, AVIOContext *pb, int taglen,
> @@ -905,6 +946,9 @@ static void id3v2_parse(AVIOContext *pb, AVDictionary **metadata, > > av_log(s, AV_LOG_WARNING, "Skipping %s ID3v2 frame %s.\n", type, > tag); > avio_skip(pb, tlen); > + /* check for comment frame */ > + } else if (!memcmp(tag, "COMM", 4)) { > + read_comm(s, pbx, tlen, metadata); pbx can be uninitialized here [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Democracy is the form of government in which you can choose your dictator
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel