aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Rapp <t.rapp@noa-audio.com>2011-10-31 15:11:37 +0100
committerMichael Niedermayer <michaelni@gmx.at>2011-11-01 00:46:41 +0100
commit0f39fa0279e12c7a174d1da9294bffd95cb15c4c (patch)
tree8cb87a10f50b65673c9cce3dd59f1805d25b9e21
parent33789862aa5b0afa037c52185462ad7ef8ab33c9 (diff)
downloadffmpeg-0f39fa0279e12c7a174d1da9294bffd95cb15c4c.tar.gz
mp3enc: avoid truncating id3v1 tags by one byte
Avoid writing the trailing null-byte for id3v1 tags if length reaches max length. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavformat/mp3enc.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/libavformat/mp3enc.c b/libavformat/mp3enc.c
index 793c9c62af..f02872d435 100644
--- a/libavformat/mp3enc.c
+++ b/libavformat/mp3enc.c
@@ -55,11 +55,12 @@ static int id3v1_create_tag(AVFormatContext *s, uint8_t *buf)
buf[0] = 'T';
buf[1] = 'A';
buf[2] = 'G';
- count += id3v1_set_string(s, "TIT2", buf + 3, 30); //title
- count += id3v1_set_string(s, "TPE1", buf + 33, 30); //author|artist
- count += id3v1_set_string(s, "TALB", buf + 63, 30); //album
- count += id3v1_set_string(s, "TDRL", buf + 93, 4); //date
- count += id3v1_set_string(s, "comment", buf + 97, 30);
+ /* we knowingly overspecify each tag length by one byte to compensate for the mandatory null byte added by av_strlcpy */
+ count += id3v1_set_string(s, "TIT2", buf + 3, 30 + 1); //title
+ count += id3v1_set_string(s, "TPE1", buf + 33, 30 + 1); //author|artist
+ count += id3v1_set_string(s, "TALB", buf + 63, 30 + 1); //album
+ count += id3v1_set_string(s, "TDRL", buf + 93, 4 + 1); //date
+ count += id3v1_set_string(s, "comment", buf + 97, 30 + 1);
if ((tag = av_dict_get(s->metadata, "TRCK", NULL, 0))) { //track
buf[125] = 0;
buf[126] = atoi(tag->value);