On Wed, 2015-03-04 at 12:31 -0800, Mark Reid wrote:
> +/*
> + * Returns the calculated length a local tag containing an utf-8 string as
> utf-16
> + */
> +static int mxf_utf16_local_tag_length(const char *utf8_str)
> +{
> + uint64_t size;
> +
> + if (!utf8_str)
> + return 0;
> +
> + size = mxf_utf16len(utf8_str);
> + if (size >= UINT16_MAX || size * 2 >= UINT16_MAX) {
if (size >= UINT16_MAX/2) {
> + av_log(NULL, AV_LOG_ERROR, "utf16 local tag size %"PRIx64" invalid
> (too large), ignoring\n", size);
> + return 0;
> + }
> +
> + return 4 + size * 2;
> +}
> +
> +/*
> + * Write a local tag containing an utf-8 string as utf-16
> */
> static void mxf_write_local_tag_utf16(AVIOContext *pb, int tag, const char
> *value)
> {
> - int i, size = strlen(value);
> + uint64_t size = mxf_utf16len(value);
> +
> + if (size >= UINT16_MAX || size * 2 >= UINT16_MAX) {
if (size >= UINT16_MAX/2) {
> + av_log(NULL, AV_LOG_ERROR, "utf16 local tag size %"PRIx64" invalid
> (too large), ignoring\n", size);
> + return;
> + }
> +
> mxf_write_local_tag(pb, size*2, tag);
> - for (i = 0; i < size; i++)
> - avio_wb16(pb, value[i]);
> + avio_put_str16be(pb, value);
> }
The rest looks OK to me. Nice work :)
/Tomas
signature.asc
Description: This is a digitally signed message part
_______________________________________________ ffmpeg-devel mailing list [email protected] http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
