debug_msg("--------------- extendedHeaderLen = %d\n", extendedHeaderLen);
#endif
- curPos += extendedHeaderLen;
- curPos += 4;
+ if (extendedHeaderLen > (int)(taglen - curPos)) {
+ debug_error("extended header too long.\n");
+ } else {
+ curPos += extendedHeaderLen;
+ curPos += 4;
+ }
}
if (needToloopv2taglen - MP3_TAGv2_23_TXT_HEADER_LEN > MP3_TAGv2_23_TXT_HEADER_LEN) {
debug_msg("--------------- extendedHeaderLen = %d\n", extendedHeaderLen);
#endif
- curPos += extendedHeaderLen;
+ if (extendedHeaderLen > (int)(taglen - curPos)) {
+ debug_error("extended header too long.\n");
+ } else {
+ curPos += extendedHeaderLen;
+ }
}
if (needToloopv2taglen - MP3_TAGv2_23_TXT_HEADER_LEN > MP3_TAGv2_23_TXT_HEADER_LEN) {