Skip to content

Commit e12886b

Browse files
authored
account for possible padding bytes at end of tag (#21)
1 parent 1fafcda commit e12886b

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

mpd-web-proxy/art/id3.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@ func ReadV3Frame(rd *bufio.Reader, fr *V3Frame) error {
8787
return err
8888
}
8989
frameType := string(frameHeader[:4])
90+
if frameHeader[0] == 0 && frameHeader[1] == 0 && frameHeader[2] == 0 && frameHeader[3] == 0 {
91+
return ErrNoAPIC
92+
}
9093
frameSize := binary.BigEndian.Uint32(frameHeader[4:8])
9194
frameFlags := (uint16(frameHeader[8]) << 8) | uint16(frameHeader[9])
9295
frameData := make([]byte, frameSize)
@@ -102,13 +105,14 @@ func ReadV3Frame(rd *bufio.Reader, fr *V3Frame) error {
102105

103106
func ApicFrame(data []byte) (string, []byte, error) {
104107
ptr := 1
105-
for ; ptr < len(data) && data[ptr] != 0; ptr++ {}
108+
for ; ptr < len(data) && data[ptr] != 0; ptr++ {
109+
}
106110
if ptr == len(data) {
107111
return "", nil, ErrMalformedID3
108112
}
109113
mimeType := string(data[1:ptr])
110114
ptr += 2
111-
for ; ptr < len(data) && data[ptr] != 0; ptr++ {}
115+
for ; ptr < len(data) && data[ptr] != 0; ptr++ {
116+
}
112117
return mimeType, data[ptr+1:], nil
113118
}
114-

0 commit comments

Comments
 (0)