Be a little less strict on invalid frames
Add iTunes frames and ignore unknown frame only if they are too big
This commit is contained in:
parent
334c71001c
commit
05c9a3fa59
10
id3v2.go
10
id3v2.go
@ -219,11 +219,6 @@ func readID3v2Frames(r io.Reader, h *id3v2Header) (map[string]interface{}, error
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Avoid corrupted padding (see http://id3.org/Compliance%20Issues).
|
||||
if !validID3Frame(h.Version, name) {
|
||||
break
|
||||
}
|
||||
|
||||
// FIXME: Do we still need this?
|
||||
// if size=0, we certainly are in a padding zone. ignore the rest of
|
||||
// the tags
|
||||
@ -233,6 +228,11 @@ func readID3v2Frames(r io.Reader, h *id3v2Header) (map[string]interface{}, error
|
||||
|
||||
offset += headerSize + size
|
||||
|
||||
// Avoid corrupted padding (see http://id3.org/Compliance%20Issues).
|
||||
if !validID3Frame(h.Version, name) && offset > h.Size {
|
||||
break
|
||||
}
|
||||
|
||||
if flags != nil {
|
||||
if flags.Compression {
|
||||
_, err = read7BitChunkedInt(r, 4) // read 4
|
||||
|
@ -119,6 +119,7 @@ var id3v23Frames = map[string]string{
|
||||
"SYTC": "Synchronized tempo codes",
|
||||
"TALB": "Album/Movie/Show title",
|
||||
"TBPM": "BPM (beats per minute)",
|
||||
"TCMP": "iTunes Compilation Flag",
|
||||
"TCOM": "Composer",
|
||||
"TCON": "Content type",
|
||||
"TCOP": "Copyright message",
|
||||
@ -152,6 +153,8 @@ var id3v23Frames = map[string]string{
|
||||
"TRSN": "Internet radio station name",
|
||||
"TRSO": "Internet radio station owner",
|
||||
"TSIZ": "Size",
|
||||
"TSO2": "iTunes uses this for Album Artist sort order",
|
||||
"TSOC": "iTunes uses this for Composer sort order",
|
||||
"TSRC": "ISRC (international standard recording code)",
|
||||
"TSSE": "Software/Hardware and settings used for encoding",
|
||||
"TYER": "Year",
|
||||
@ -209,6 +212,7 @@ var id3v24Frames = map[string]string{
|
||||
|
||||
"TALB": "Album/Movie/Show title",
|
||||
"TBPM": "BPM (beats per minute)",
|
||||
"TCMP": "iTunes Compilation Flag",
|
||||
"TCOM": "Composer",
|
||||
"TCON": "Content type",
|
||||
"TCOP": "Copyright message",
|
||||
@ -246,7 +250,9 @@ var id3v24Frames = map[string]string{
|
||||
"TRCK": "Track number/Position in set",
|
||||
"TRSN": "Internet radio station name",
|
||||
"TRSO": "Internet radio station owner",
|
||||
"TSO2": "iTunes uses this for Album Artist sort order",
|
||||
"TSOA": "Album sort order",
|
||||
"TSOC": "iTunes uses this for Composer sort order",
|
||||
"TSOP": "Performer sort order",
|
||||
"TSOT": "Title sort order",
|
||||
"TSRC": "ISRC (international standard recording code)",
|
||||
|
Loading…
Reference in New Issue
Block a user