mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-04 13:07:52 +00:00
Bug 801330 - Assert if charLenTable is too small. r=smontagu
This commit is contained in:
parent
2f959ef5b7
commit
1a014d5dce
@ -6,6 +6,7 @@
|
||||
#define nsCodingStateMachine_h__
|
||||
|
||||
#include "nsPkgInt.h"
|
||||
#include "mozilla/Util.h"
|
||||
|
||||
typedef enum {
|
||||
eStart = 0,
|
||||
@ -22,6 +23,9 @@ typedef struct
|
||||
uint32_t classFactor;
|
||||
nsPkgInt stateTable;
|
||||
const uint32_t* charLenTable;
|
||||
#ifdef DEBUG
|
||||
const size_t charLenTableLength;
|
||||
#endif
|
||||
const char* name;
|
||||
} SMModel;
|
||||
|
||||
@ -34,6 +38,7 @@ public:
|
||||
if (mCurrentState == eStart)
|
||||
{
|
||||
mCurrentBytePos = 0;
|
||||
MOZ_ASSERT(byteCls < mModel->charLenTableLength);
|
||||
mCurrentCharLen = mModel->charLenTable[byteCls];
|
||||
}
|
||||
//from byte's class and stateTable, we get its next state
|
||||
@ -68,5 +73,12 @@ extern const SMModel ISO2022CNSMModel;
|
||||
extern const SMModel ISO2022JPSMModel;
|
||||
extern const SMModel ISO2022KRSMModel;
|
||||
|
||||
#undef CHAR_LEN_TABLE
|
||||
#ifdef DEBUG
|
||||
#define CHAR_LEN_TABLE(x) x, mozilla::ArrayLength(x)
|
||||
#else
|
||||
#define CHAR_LEN_TABLE(x) x
|
||||
#endif
|
||||
|
||||
#endif /* nsCodingStateMachine_h__ */
|
||||
|
||||
|
@ -55,7 +55,7 @@ const SMModel HZSMModel = {
|
||||
{eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, HZ_cls },
|
||||
6,
|
||||
{eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, HZ_st },
|
||||
HZCharLenTable,
|
||||
CHAR_LEN_TABLE(HZCharLenTable),
|
||||
"HZ-GB-2312",
|
||||
};
|
||||
|
||||
@ -113,7 +113,7 @@ const SMModel ISO2022CNSMModel = {
|
||||
{eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, ISO2022CN_cls },
|
||||
9,
|
||||
{eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, ISO2022CN_st },
|
||||
ISO2022CNCharLenTable,
|
||||
CHAR_LEN_TABLE(ISO2022CNCharLenTable),
|
||||
"ISO-2022-CN",
|
||||
};
|
||||
|
||||
@ -171,7 +171,7 @@ const SMModel ISO2022JPSMModel = {
|
||||
{eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, ISO2022JP_cls },
|
||||
10,
|
||||
{eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, ISO2022JP_st },
|
||||
ISO2022JPCharLenTable,
|
||||
CHAR_LEN_TABLE(ISO2022JPCharLenTable),
|
||||
"ISO-2022-JP",
|
||||
};
|
||||
|
||||
@ -225,7 +225,7 @@ const SMModel ISO2022KRSMModel = {
|
||||
{eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, ISO2022KR_cls },
|
||||
6,
|
||||
{eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, ISO2022KR_st },
|
||||
ISO2022KRCharLenTable,
|
||||
CHAR_LEN_TABLE(ISO2022KRCharLenTable),
|
||||
"ISO-2022-KR",
|
||||
};
|
||||
|
||||
|
@ -61,7 +61,7 @@ SMModel const Big5SMModel = {
|
||||
{eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, BIG5_cls },
|
||||
5,
|
||||
{eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, BIG5_st },
|
||||
Big5CharLenTable,
|
||||
CHAR_LEN_TABLE(Big5CharLenTable),
|
||||
"Big5",
|
||||
};
|
||||
|
||||
@ -116,7 +116,7 @@ const SMModel EUCJPSMModel = {
|
||||
{eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, EUCJP_cls },
|
||||
6,
|
||||
{eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, EUCJP_st },
|
||||
EUCJPCharLenTable,
|
||||
CHAR_LEN_TABLE(EUCJPCharLenTable),
|
||||
"EUC-JP",
|
||||
};
|
||||
|
||||
@ -168,7 +168,7 @@ const SMModel EUCKRSMModel = {
|
||||
{eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, EUCKR_cls },
|
||||
4,
|
||||
{eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, EUCKR_st },
|
||||
EUCKRCharLenTable,
|
||||
CHAR_LEN_TABLE(EUCKRCharLenTable),
|
||||
"EUC-KR",
|
||||
};
|
||||
|
||||
@ -224,7 +224,7 @@ const SMModel EUCTWSMModel = {
|
||||
{eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, EUCTW_cls },
|
||||
7,
|
||||
{eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, EUCTW_st },
|
||||
EUCTWCharLenTable,
|
||||
CHAR_LEN_TABLE(EUCTWCharLenTable),
|
||||
"x-euc-tw",
|
||||
};
|
||||
|
||||
@ -277,7 +277,7 @@ SMModel GB2312SMModel = {
|
||||
{eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, GB2312_cls },
|
||||
4,
|
||||
{eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, GB2312_st },
|
||||
GB2312CharLenTable,
|
||||
CHAR_LEN_TABLE(GB2312CharLenTable),
|
||||
"GB2312",
|
||||
};
|
||||
*/
|
||||
@ -340,7 +340,7 @@ const SMModel GB18030SMModel = {
|
||||
{eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, GB18030_cls },
|
||||
7,
|
||||
{eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, GB18030_st },
|
||||
GB18030CharLenTable,
|
||||
CHAR_LEN_TABLE(GB18030CharLenTable),
|
||||
"GB18030",
|
||||
};
|
||||
|
||||
@ -397,7 +397,7 @@ const SMModel SJISSMModel = {
|
||||
{eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, SJIS_cls },
|
||||
6,
|
||||
{eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, SJIS_st },
|
||||
SJISCharLenTable,
|
||||
CHAR_LEN_TABLE(SJISCharLenTable),
|
||||
"Shift_JIS",
|
||||
};
|
||||
|
||||
@ -475,7 +475,7 @@ const SMModel UTF8SMModel = {
|
||||
{eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, UTF8_cls },
|
||||
16,
|
||||
{eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, UTF8_st },
|
||||
UTF8CharLenTable,
|
||||
CHAR_LEN_TABLE(UTF8CharLenTable),
|
||||
"UTF-8",
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user