* 'METADATA_BLOCK_PICTURE'. This is the preferred and
* recommended way of embedding cover art within VorbisComments."
*/
- if (!strcmp(tt, "METADATA_BLOCK_PICTURE") && parse_picture) {
+ if (!av_strcasecmp(tt, "METADATA_BLOCK_PICTURE") && parse_picture) {
int ret, len = AV_BASE64_DECODE_SIZE(vl);
char *pict = av_malloc(len);
av_freep(&tt);
av_freep(&ct);
if (ret > 0)
- ret = ff_flac_parse_picture(as, pict, ret);
+ ret = ff_flac_parse_picture(as, pict, ret, 0);
av_freep(&pict);
if (ret < 0) {
av_log(as, AV_LOG_WARNING, "Failed to parse cover art block.\n");
av_dict_set(m, tt, ";", AV_DICT_APPEND);
}
av_dict_set(m, tt, ct,
- AV_DICT_DONT_STRDUP_KEY |
+ AV_DICT_DONT_STRDUP_KEY | AV_DICT_DONT_STRDUP_VAL |
AV_DICT_APPEND);
- av_freep(&ct);
}
}
}
os->new_metadata = av_packet_pack_dictionary(st->metadata, &os->new_metadata_size);
/* Send an empty dictionary to indicate that metadata has been cleared. */
} else {
- os->new_metadata = av_malloc(1);
+ os->new_metadata = av_mallocz(1);
os->new_metadata_size = 0;
}
}
}
} else {
- int ret = fixup_vorbis_headers(s, priv, &st->codecpar->extradata);
+ int ret;
+
+ if (priv->vp)
+ return AVERROR_INVALIDDATA;
+
+ ret = fixup_vorbis_headers(s, priv, &st->codecpar->extradata);
if (ret < 0) {
st->codecpar->extradata_size = 0;
return ret;