for ($i = 0;
$i <
$len;
$i++
) { if ($framedata[$i] != "\x00"
) { $thisfile_id3v2['padding'
]['valid'
] = false;
$thisfile_id3v2['padding'
]['errorpos'
] =
$thisfile_id3v2['padding'
]['start'
] +
$i;
$this->
warning('Invalid ID3v2 padding found at offset '.
$thisfile_id3v2['padding'
]['errorpos'
].' (the remaining '.
($thisfile_id3v2['padding'
]['length'
] -
$i).' bytes are considered invalid)'
);
break;
} } break; // skip rest of ID3v2 header
} if ($iTunesBrokenFrameNameFixed = self::
ID3v22iTunesBrokenFrameName($frame_name)) { $this->
warning('error parsing "'.
$frame_name.'" ('.
$framedataoffset.' bytes into the ID3v2.'.
$id3v2_majorversion.' tag). (ERROR: IsValidID3v2FrameName("'.
str_replace("\x00", ' ',
$frame_name).'", '.
$id3v2_majorversion.'))). [Note: this particular error has been known to happen with tags edited by iTunes (versions "X v2.0.3", "v3.0.1", "v7.0.0.70" are known-guilty, probably others too)]. Translated frame name from "'.
str_replace("\x00", ' ',
$frame_name).'" to "'.
$iTunesBrokenFrameNameFixed.'" for parsing.'
);
$frame_name =
$iTunesBrokenFrameNameFixed;
} if (($frame_size <=
strlen($framedata)) && ($this->
IsValidID3v2FrameName($frame_name,
$id3v2_majorversion))) { $parsedFrame = array
();
$parsedFrame['frame_name'
] =
$frame_name;
$parsedFrame['frame_flags_raw'
] =
$frame_flags;
$parsedFrame['data'
] =
substr($framedata, 0,
$frame_size);
$parsedFrame['datalength'
] = getid3_lib::
CastAsInt($frame_size);
$parsedFrame['dataoffset'
] =
$framedataoffset;