mov: do not print string len in handler_name.

The handler name is stored as a pascal string in the QT specs (first
byte is the length of the string), thus leading to an invalid metadata
string export.

Also add a second length check based on the first character to avoid
overwriting an already specified handler_name (it happens with Youtube
videos for instance, the handler_name get masked), or specifying an
empty string metadata.
pull/5/head
Clément Bœsch 13 years ago committed by Clément Bœsch
parent c99bdd51b2
commit 614716f583
  1. 4
      libavformat/mov.c

@ -534,7 +534,9 @@ static int mov_read_hdlr(MOVContext *c, AVIOContext *pb, MOVAtom atom)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
avio_read(pb, title_str, title_size); avio_read(pb, title_str, title_size);
title_str[title_size] = 0; title_str[title_size] = 0;
av_dict_set(&st->metadata, "handler_name", title_str, 0); if (title_str[0])
av_dict_set(&st->metadata, "handler_name", title_str +
(!c->isom && title_str[0] == title_size - 1), 0);
av_freep(&title_str); av_freep(&title_str);
} }

Loading…
Cancel
Save