Loading intl/uconv/ucvcn/nsISO2022CNToUnicode.cpp +30 −34 Original line number Diff line number Diff line Loading @@ -105,7 +105,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen if(ESC == *src) { mState = eState_ESC; } else { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -117,7 +117,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen if('$' == *src) { mState = eState_ESC_24; } else { if(dest+2 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 2)) goto error1; *dest++ = (PRUnichar) ESC; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -134,7 +134,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen } else if('+' == *src) { mState = eState_ESC_24_2B; } else { if(dest+3 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 3)) goto error1; *dest++ = (PRUnichar) ESC; *dest++ = (PRUnichar) '$'; Loading @@ -150,7 +150,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen } else if('G' == *src) { mState = eState_ESC_24_29_G; } else { if(dest+4 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 4)) goto error1; *dest++ = (PRUnichar) ESC; *dest++ = (PRUnichar) '$'; Loading @@ -166,7 +166,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen mState = eState_GB2312_1980; mRunLength = 0; } else { if(dest+5 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 5)) goto error1; *dest++ = (PRUnichar) ESC; *dest++ = (PRUnichar) '$'; Loading @@ -182,7 +182,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen if(SI == *src) { // Shift-In (SI) mState = eState_ESC_24_29_A_SO_SI; if (mRunLength == 0) { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = 0xFFFD; } Loading @@ -194,7 +194,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen mData = *src; mState = eState_GB2312_1980_2ndbyte; } else { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; } Loading @@ -220,7 +220,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen dest += aLen; } else { if(dest+2 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 2)) goto error1; *dest++ = (PRUnichar) mData; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -235,7 +235,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen } else if(ESC == *src) { mState = eState_ESC; } else { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -248,7 +248,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen mState = eState_CNS11643_1; mRunLength = 0; } else { if(dest+5 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 5)) goto error1; *dest++ = (PRUnichar) ESC; *dest++ = (PRUnichar) '$'; Loading @@ -264,7 +264,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen if(SI == *src) { // Shift-In (SI) mState = eState_ESC_24_29_G_SO_SI; if (mRunLength == 0) { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = 0xFFFD; } Loading @@ -276,7 +276,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen mData = *src; mState = eState_CNS11643_1_2ndbyte; } else { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; } Loading @@ -302,7 +302,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen dest += aLen; } else { if(dest+2 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 2)) goto error1; *dest++ = (PRUnichar) mData; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -317,7 +317,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen } else if(ESC == *src) { mState = eState_ESC; } else { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -329,7 +329,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen if('H' == *src) { mState = eState_ESC_24_2A_H; } else { if(dest+4 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 4)) goto error1; *dest++ = (PRUnichar) ESC; *dest++ = (PRUnichar) '$'; Loading @@ -344,7 +344,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen if(ESC == *src) { mState = eState_ESC_24_2A_H_ESC; } else { if(dest+5 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 5)) goto error1; *dest++ = (PRUnichar) ESC; *dest++ = (PRUnichar) '$'; Loading @@ -363,7 +363,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen } else if('$' == *src) { mState = eState_ESC_24; } else { if(dest+6 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 6)) goto error1; *dest++ = (PRUnichar) ESC; *dest++ = (PRUnichar) '$'; Loading @@ -380,7 +380,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen if(SI == *src) { // Shift-In (SI) mState = eState_ESC_24_2A_H_ESC_SS2_SI; if (mRunLength == 0) { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = 0xFFFD; } Loading @@ -392,7 +392,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen mData = *src; mState = eState_CNS11643_2_2ndbyte; } else { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; } Loading Loading @@ -420,7 +420,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen dest += aLen; } else { if(dest+2 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 2)) goto error1; *dest++ = (PRUnichar) mData; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -432,7 +432,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen if(ESC == *src) { mState = eState_ESC_24_2A_H_ESC_SS2_SI_ESC; } else { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -447,7 +447,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen } else if('$' == *src) { mState = eState_ESC_24; } else { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -460,7 +460,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen mState = eState_ESC_24_2B_I; mPlaneID = *src - 'I' + 3; } else { if(dest+4 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 4)) goto error1; *dest++ = (PRUnichar) ESC; *dest++ = (PRUnichar) '$'; Loading @@ -475,7 +475,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen if(ESC == *src) { mState = eState_ESC_24_2B_I_ESC; } else { if(dest+5 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 5)) goto error1; *dest++ = (PRUnichar) ESC; *dest++ = (PRUnichar) '$'; Loading @@ -494,7 +494,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen } else if('$' == *src) { mState = eState_ESC_24; } else { if(dest+6 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 6)) goto error1; *dest++ = (PRUnichar) ESC; *dest++ = (PRUnichar) '$'; Loading @@ -511,7 +511,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen if(SI == *src) { // Shift-In (SI) mState = eState_ESC_24_2B_I_ESC_SS3_SI; if (mRunLength == 0) { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = 0xFFFD; } Loading @@ -523,7 +523,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen mData = *src; mState = eState_CNS11643_3_2ndbyte; } else { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; } Loading Loading @@ -552,7 +552,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen dest += aLen; } else { if(dest+2 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 2)) goto error1; *dest++ = (PRUnichar) mData; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -564,7 +564,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen if(ESC == *src) { mState = eState_ESC_24_2B_I_ESC_SS3_SI_ESC; } else { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -579,7 +579,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen } else if('$' == *src) { mState = eState_ESC_24; } else { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -600,10 +600,6 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen error1: *aDestLen = dest-aDest; src++; if ((mState == eState_ASCII) && (src == srcEnd)) { return NS_OK; } *aSrcLen = src - (const unsigned char*)aSrc; return NS_OK_UDEC_MOREOUTPUT; Loading intl/uconv/ucvja/nsJapaneseToUnicode.cpp +34 −36 Original line number Diff line number Diff line Loading @@ -505,9 +505,9 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( } else if(*src & 0x80) { goto error2; } else { *dest++ = (PRUnichar) *src; if(dest >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (PRUnichar) *src; } break; Loading @@ -521,7 +521,7 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( } else if ('N' == *src) { // for ISO-2022-JP-2 mState = mState_ESC_4e; } else { if((dest+2) >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 2)) goto error1; *dest++ = (PRUnichar) 0x1b; if(0x80 & *src) Loading @@ -535,7 +535,7 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( if( 'B' == *src) { mState = mState_ASCII; if (mRunLength == 0) { if((dest+1) >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = 0xFFFD; } Loading @@ -543,7 +543,7 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( } else if ('J' == *src) { mState = mState_JISX0201_1976Roman; if (mRunLength == 0 && mLastLegalState != mState_ASCII) { if((dest+1) >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; if (mErrBehavior == kOnError_Signal) goto error2; Loading @@ -554,7 +554,7 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( mState = mState_JISX0201_1976Kana; mRunLength = 0; } else { if((dest+3) >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 3)) goto error1; *dest++ = (PRUnichar) 0x1b; *dest++ = (PRUnichar) '('; Loading @@ -578,7 +578,7 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( } else if ('(' == *src) { mState = mState_ESC_24_28; } else { if((dest+3) >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 3)) goto error1; *dest++ = (PRUnichar) 0x1b; *dest++ = (PRUnichar) '$'; Loading @@ -597,7 +597,7 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( mState = mState_JISX0212_1990; mRunLength = 0; } else { if((dest+4) >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 4)) goto error1; *dest++ = (PRUnichar) 0x1b; *dest++ = (PRUnichar) '$'; Loading @@ -619,10 +619,10 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( // XXX We need to decide how to handle \ and ~ here // we may need a if statement here for '\' and '~' // to map them to Yen and Overbar if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (PRUnichar) *src; ++mRunLength; if(dest >= destEnd) goto error1; } break; Loading @@ -632,13 +632,13 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( mState = mState_ESC; } else { if((0x21 <= *src) && (*src <= 0x5F)) { if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (0xFF61-0x0021) + *src; ++mRunLength; } else { goto error2; } if(dest >= destEnd) goto error1; } break; Loading Loading @@ -725,12 +725,12 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( } else { // XXX We need to map from JIS X 0208 1983 to 1987 // in the next line before pass to *dest++ if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = gJapaneseMap[mData+off]; ++mRunLength; } mState = mState_JISX0208_1978; if(dest >= destEnd) goto error1; } break; Loading @@ -752,6 +752,8 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( if (!mGB2312Decoder) {// failed creating a delegate converter goto error2; } else { if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; unsigned char gb[2]; PRUnichar uni; PRInt32 gbLen = 2, uniLen = 1; Loading @@ -768,8 +770,6 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( } } mState = mState_GB2312_1980; if(dest >= destEnd) goto error1; } break; Loading @@ -779,12 +779,12 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( if(0xFF == off) { goto error2; } else { if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = gJapaneseMap[mData+off]; ++mRunLength; } mState = mState_JISX0208_1983; if(dest >= destEnd) goto error1; } break; Loading @@ -806,6 +806,8 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( if (!mEUCKRDecoder) {// failed creating a delegate converter goto error2; } else { if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; unsigned char ksc[2]; PRUnichar uni; PRInt32 kscLen = 2, uniLen = 1; Loading @@ -822,8 +824,6 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( } } mState = mState_KSC5601_1987; if(dest >= destEnd) goto error1; } break; Loading @@ -833,12 +833,12 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( if(0xFF == off) { goto error2; } else { if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = gJapaneseMap[mData+off]; ++mRunLength; } mState = mState_JISX0212_1990; if(dest >= destEnd) goto error1; } break; Loading @@ -850,7 +850,7 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( } else if ('F' == *src) { G2charset = G2_ISO88597; } else { if((dest+3) >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 3)) goto error1; *dest++ = (PRUnichar) 0x1b; *dest++ = (PRUnichar) '.'; Loading @@ -867,6 +867,8 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( mState = mLastLegalState; if((0x20 <= *src) && (*src <= 0x7F)) { if (G2_ISO88591 == G2charset) { if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = *src | 0x80; ++mRunLength; } else if (G2_ISO88597 == G2charset) { Loading @@ -882,6 +884,8 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( if (!mISO88597Decoder) {// failed creating a delegate converter goto error2; } else { if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; // Put one character with ISO-8859-7 encoding. unsigned char gr = *src | 0x80; PRUnichar uni; Loading @@ -895,10 +899,8 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( } else {// G2charset is G2_unknown (not designated yet) goto error2; } if(dest >= destEnd) goto error1; } else { if((dest+3) >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 3)) goto error1; *dest++ = (PRUnichar) 0x1b; *dest++ = (PRUnichar) 'N'; Loading @@ -921,10 +923,6 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( return NS_OK; error1: *aDestLen = dest - aDest; src++; if ((mState == 0) && (src == srcEnd)) { return NS_OK; } *aSrcLen = src - (const unsigned char*)aSrc; return NS_OK_UDEC_MOREOUTPUT; error2: Loading intl/uconv/ucvko/nsISO2022KRToUnicode.cpp +18 −18 Original line number Diff line number Diff line Loading @@ -71,14 +71,14 @@ NS_IMETHODIMP nsISO2022KRToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen mRunLength = 0; } else if(*src & 0x80) { *dest++ = 0xFFFD; if(dest >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = 0xFFFD; } else { *dest++ = (PRUnichar) *src; if(dest >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (PRUnichar) *src; } break; Loading @@ -87,7 +87,7 @@ NS_IMETHODIMP nsISO2022KRToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen mState = mState_ESC_24; } else { if((dest+2) >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 2)) goto error1; *dest++ = (PRUnichar) 0x1b; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -100,7 +100,7 @@ NS_IMETHODIMP nsISO2022KRToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen mState = mState_ESC_24_29; } else { if((dest+3) >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 3)) goto error1; *dest++ = (PRUnichar) 0x1b; *dest++ = (PRUnichar) '$'; Loading @@ -116,7 +116,7 @@ NS_IMETHODIMP nsISO2022KRToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen mRunLength = 0; } else { if((dest+4) >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 4)) goto error1; *dest++ = (PRUnichar) 0x1b; *dest++ = (PRUnichar) '$'; Loading @@ -134,7 +134,7 @@ NS_IMETHODIMP nsISO2022KRToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen else if (0x0f == *src) { // Shift-In (SI) mState = mState_ASCII; if (mRunLength == 0) { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = 0xFFFD; } Loading @@ -142,16 +142,16 @@ NS_IMETHODIMP nsISO2022KRToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen } else if ((PRUint8) *src == 0x20 || (PRUint8) *src == 0x09) { // Allow space and tab between SO and SI (i.e. in Hangul segment) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; mState = mState_KSX1001_1992; *dest++ = (PRUnichar) *src; ++mRunLength; if(dest >= destEnd) goto error1; } else { // Everything else is invalid. *dest++ = 0xFFFD; if(dest >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = 0xFFFD; } break; Loading @@ -171,6 +171,8 @@ NS_IMETHODIMP nsISO2022KRToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen *dest++ = 0xFFFD; } else { if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; unsigned char ksx[2]; PRUnichar uni; PRInt32 ksxLen = 2, uniLen = 1; Loading @@ -184,8 +186,6 @@ NS_IMETHODIMP nsISO2022KRToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen *dest++ = uni; ++mRunLength; } if(dest >= destEnd) goto error1; mState = mState_KSX1001_1992; } else { // Invalid Loading @@ -195,17 +195,17 @@ NS_IMETHODIMP nsISO2022KRToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen else { mState = mState_KSX1001_1992; } *dest++ = 0xFFFD; if(dest >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = 0xFFFD; } break; case mState_ERROR: mState = mLastLegalState; *dest++ = 0xFFFD; if(dest >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = 0xFFFD; break; } // switch Loading intl/uconv/util/nsUCSupport.h +7 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,13 @@ #define ONE_BYTE_TABLE_SIZE 256 inline bool WillOverrun(PRUnichar* aDest, PRUnichar* aDestEnd, PRUint32 aLength) { NS_ASSERTION(aDest <= aDestEnd, "Pointer overrun even before check"); return ((aDestEnd - aDest) < aLength); } #define CHECK_OVERRUN(dest, destEnd, length) (WillOverrun(dest, destEnd, length)) #ifdef NS_DEBUG // {7AFC9F0A-CFE1-44ea-A755-E3B86AB1226E} #define NS_IBASICDECODER_IID \ Loading Loading
intl/uconv/ucvcn/nsISO2022CNToUnicode.cpp +30 −34 Original line number Diff line number Diff line Loading @@ -105,7 +105,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen if(ESC == *src) { mState = eState_ESC; } else { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -117,7 +117,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen if('$' == *src) { mState = eState_ESC_24; } else { if(dest+2 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 2)) goto error1; *dest++ = (PRUnichar) ESC; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -134,7 +134,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen } else if('+' == *src) { mState = eState_ESC_24_2B; } else { if(dest+3 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 3)) goto error1; *dest++ = (PRUnichar) ESC; *dest++ = (PRUnichar) '$'; Loading @@ -150,7 +150,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen } else if('G' == *src) { mState = eState_ESC_24_29_G; } else { if(dest+4 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 4)) goto error1; *dest++ = (PRUnichar) ESC; *dest++ = (PRUnichar) '$'; Loading @@ -166,7 +166,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen mState = eState_GB2312_1980; mRunLength = 0; } else { if(dest+5 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 5)) goto error1; *dest++ = (PRUnichar) ESC; *dest++ = (PRUnichar) '$'; Loading @@ -182,7 +182,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen if(SI == *src) { // Shift-In (SI) mState = eState_ESC_24_29_A_SO_SI; if (mRunLength == 0) { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = 0xFFFD; } Loading @@ -194,7 +194,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen mData = *src; mState = eState_GB2312_1980_2ndbyte; } else { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; } Loading @@ -220,7 +220,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen dest += aLen; } else { if(dest+2 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 2)) goto error1; *dest++ = (PRUnichar) mData; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -235,7 +235,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen } else if(ESC == *src) { mState = eState_ESC; } else { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -248,7 +248,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen mState = eState_CNS11643_1; mRunLength = 0; } else { if(dest+5 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 5)) goto error1; *dest++ = (PRUnichar) ESC; *dest++ = (PRUnichar) '$'; Loading @@ -264,7 +264,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen if(SI == *src) { // Shift-In (SI) mState = eState_ESC_24_29_G_SO_SI; if (mRunLength == 0) { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = 0xFFFD; } Loading @@ -276,7 +276,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen mData = *src; mState = eState_CNS11643_1_2ndbyte; } else { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; } Loading @@ -302,7 +302,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen dest += aLen; } else { if(dest+2 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 2)) goto error1; *dest++ = (PRUnichar) mData; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -317,7 +317,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen } else if(ESC == *src) { mState = eState_ESC; } else { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -329,7 +329,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen if('H' == *src) { mState = eState_ESC_24_2A_H; } else { if(dest+4 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 4)) goto error1; *dest++ = (PRUnichar) ESC; *dest++ = (PRUnichar) '$'; Loading @@ -344,7 +344,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen if(ESC == *src) { mState = eState_ESC_24_2A_H_ESC; } else { if(dest+5 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 5)) goto error1; *dest++ = (PRUnichar) ESC; *dest++ = (PRUnichar) '$'; Loading @@ -363,7 +363,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen } else if('$' == *src) { mState = eState_ESC_24; } else { if(dest+6 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 6)) goto error1; *dest++ = (PRUnichar) ESC; *dest++ = (PRUnichar) '$'; Loading @@ -380,7 +380,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen if(SI == *src) { // Shift-In (SI) mState = eState_ESC_24_2A_H_ESC_SS2_SI; if (mRunLength == 0) { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = 0xFFFD; } Loading @@ -392,7 +392,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen mData = *src; mState = eState_CNS11643_2_2ndbyte; } else { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; } Loading Loading @@ -420,7 +420,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen dest += aLen; } else { if(dest+2 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 2)) goto error1; *dest++ = (PRUnichar) mData; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -432,7 +432,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen if(ESC == *src) { mState = eState_ESC_24_2A_H_ESC_SS2_SI_ESC; } else { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -447,7 +447,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen } else if('$' == *src) { mState = eState_ESC_24; } else { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -460,7 +460,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen mState = eState_ESC_24_2B_I; mPlaneID = *src - 'I' + 3; } else { if(dest+4 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 4)) goto error1; *dest++ = (PRUnichar) ESC; *dest++ = (PRUnichar) '$'; Loading @@ -475,7 +475,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen if(ESC == *src) { mState = eState_ESC_24_2B_I_ESC; } else { if(dest+5 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 5)) goto error1; *dest++ = (PRUnichar) ESC; *dest++ = (PRUnichar) '$'; Loading @@ -494,7 +494,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen } else if('$' == *src) { mState = eState_ESC_24; } else { if(dest+6 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 6)) goto error1; *dest++ = (PRUnichar) ESC; *dest++ = (PRUnichar) '$'; Loading @@ -511,7 +511,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen if(SI == *src) { // Shift-In (SI) mState = eState_ESC_24_2B_I_ESC_SS3_SI; if (mRunLength == 0) { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = 0xFFFD; } Loading @@ -523,7 +523,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen mData = *src; mState = eState_CNS11643_3_2ndbyte; } else { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; } Loading Loading @@ -552,7 +552,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen dest += aLen; } else { if(dest+2 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 2)) goto error1; *dest++ = (PRUnichar) mData; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -564,7 +564,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen if(ESC == *src) { mState = eState_ESC_24_2B_I_ESC_SS3_SI_ESC; } else { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -579,7 +579,7 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen } else if('$' == *src) { mState = eState_ESC_24; } else { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -600,10 +600,6 @@ NS_IMETHODIMP nsISO2022CNToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen error1: *aDestLen = dest-aDest; src++; if ((mState == eState_ASCII) && (src == srcEnd)) { return NS_OK; } *aSrcLen = src - (const unsigned char*)aSrc; return NS_OK_UDEC_MOREOUTPUT; Loading
intl/uconv/ucvja/nsJapaneseToUnicode.cpp +34 −36 Original line number Diff line number Diff line Loading @@ -505,9 +505,9 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( } else if(*src & 0x80) { goto error2; } else { *dest++ = (PRUnichar) *src; if(dest >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (PRUnichar) *src; } break; Loading @@ -521,7 +521,7 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( } else if ('N' == *src) { // for ISO-2022-JP-2 mState = mState_ESC_4e; } else { if((dest+2) >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 2)) goto error1; *dest++ = (PRUnichar) 0x1b; if(0x80 & *src) Loading @@ -535,7 +535,7 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( if( 'B' == *src) { mState = mState_ASCII; if (mRunLength == 0) { if((dest+1) >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = 0xFFFD; } Loading @@ -543,7 +543,7 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( } else if ('J' == *src) { mState = mState_JISX0201_1976Roman; if (mRunLength == 0 && mLastLegalState != mState_ASCII) { if((dest+1) >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; if (mErrBehavior == kOnError_Signal) goto error2; Loading @@ -554,7 +554,7 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( mState = mState_JISX0201_1976Kana; mRunLength = 0; } else { if((dest+3) >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 3)) goto error1; *dest++ = (PRUnichar) 0x1b; *dest++ = (PRUnichar) '('; Loading @@ -578,7 +578,7 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( } else if ('(' == *src) { mState = mState_ESC_24_28; } else { if((dest+3) >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 3)) goto error1; *dest++ = (PRUnichar) 0x1b; *dest++ = (PRUnichar) '$'; Loading @@ -597,7 +597,7 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( mState = mState_JISX0212_1990; mRunLength = 0; } else { if((dest+4) >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 4)) goto error1; *dest++ = (PRUnichar) 0x1b; *dest++ = (PRUnichar) '$'; Loading @@ -619,10 +619,10 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( // XXX We need to decide how to handle \ and ~ here // we may need a if statement here for '\' and '~' // to map them to Yen and Overbar if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (PRUnichar) *src; ++mRunLength; if(dest >= destEnd) goto error1; } break; Loading @@ -632,13 +632,13 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( mState = mState_ESC; } else { if((0x21 <= *src) && (*src <= 0x5F)) { if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (0xFF61-0x0021) + *src; ++mRunLength; } else { goto error2; } if(dest >= destEnd) goto error1; } break; Loading Loading @@ -725,12 +725,12 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( } else { // XXX We need to map from JIS X 0208 1983 to 1987 // in the next line before pass to *dest++ if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = gJapaneseMap[mData+off]; ++mRunLength; } mState = mState_JISX0208_1978; if(dest >= destEnd) goto error1; } break; Loading @@ -752,6 +752,8 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( if (!mGB2312Decoder) {// failed creating a delegate converter goto error2; } else { if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; unsigned char gb[2]; PRUnichar uni; PRInt32 gbLen = 2, uniLen = 1; Loading @@ -768,8 +770,6 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( } } mState = mState_GB2312_1980; if(dest >= destEnd) goto error1; } break; Loading @@ -779,12 +779,12 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( if(0xFF == off) { goto error2; } else { if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = gJapaneseMap[mData+off]; ++mRunLength; } mState = mState_JISX0208_1983; if(dest >= destEnd) goto error1; } break; Loading @@ -806,6 +806,8 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( if (!mEUCKRDecoder) {// failed creating a delegate converter goto error2; } else { if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; unsigned char ksc[2]; PRUnichar uni; PRInt32 kscLen = 2, uniLen = 1; Loading @@ -822,8 +824,6 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( } } mState = mState_KSC5601_1987; if(dest >= destEnd) goto error1; } break; Loading @@ -833,12 +833,12 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( if(0xFF == off) { goto error2; } else { if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = gJapaneseMap[mData+off]; ++mRunLength; } mState = mState_JISX0212_1990; if(dest >= destEnd) goto error1; } break; Loading @@ -850,7 +850,7 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( } else if ('F' == *src) { G2charset = G2_ISO88597; } else { if((dest+3) >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 3)) goto error1; *dest++ = (PRUnichar) 0x1b; *dest++ = (PRUnichar) '.'; Loading @@ -867,6 +867,8 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( mState = mLastLegalState; if((0x20 <= *src) && (*src <= 0x7F)) { if (G2_ISO88591 == G2charset) { if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = *src | 0x80; ++mRunLength; } else if (G2_ISO88597 == G2charset) { Loading @@ -882,6 +884,8 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( if (!mISO88597Decoder) {// failed creating a delegate converter goto error2; } else { if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; // Put one character with ISO-8859-7 encoding. unsigned char gr = *src | 0x80; PRUnichar uni; Loading @@ -895,10 +899,8 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( } else {// G2charset is G2_unknown (not designated yet) goto error2; } if(dest >= destEnd) goto error1; } else { if((dest+3) >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 3)) goto error1; *dest++ = (PRUnichar) 0x1b; *dest++ = (PRUnichar) 'N'; Loading @@ -921,10 +923,6 @@ NS_IMETHODIMP nsISO2022JPToUnicodeV2::Convert( return NS_OK; error1: *aDestLen = dest - aDest; src++; if ((mState == 0) && (src == srcEnd)) { return NS_OK; } *aSrcLen = src - (const unsigned char*)aSrc; return NS_OK_UDEC_MOREOUTPUT; error2: Loading
intl/uconv/ucvko/nsISO2022KRToUnicode.cpp +18 −18 Original line number Diff line number Diff line Loading @@ -71,14 +71,14 @@ NS_IMETHODIMP nsISO2022KRToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen mRunLength = 0; } else if(*src & 0x80) { *dest++ = 0xFFFD; if(dest >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = 0xFFFD; } else { *dest++ = (PRUnichar) *src; if(dest >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = (PRUnichar) *src; } break; Loading @@ -87,7 +87,7 @@ NS_IMETHODIMP nsISO2022KRToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen mState = mState_ESC_24; } else { if((dest+2) >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 2)) goto error1; *dest++ = (PRUnichar) 0x1b; *dest++ = (0x80 & *src) ? 0xFFFD : (PRUnichar) *src; Loading @@ -100,7 +100,7 @@ NS_IMETHODIMP nsISO2022KRToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen mState = mState_ESC_24_29; } else { if((dest+3) >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 3)) goto error1; *dest++ = (PRUnichar) 0x1b; *dest++ = (PRUnichar) '$'; Loading @@ -116,7 +116,7 @@ NS_IMETHODIMP nsISO2022KRToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen mRunLength = 0; } else { if((dest+4) >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 4)) goto error1; *dest++ = (PRUnichar) 0x1b; *dest++ = (PRUnichar) '$'; Loading @@ -134,7 +134,7 @@ NS_IMETHODIMP nsISO2022KRToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen else if (0x0f == *src) { // Shift-In (SI) mState = mState_ASCII; if (mRunLength == 0) { if(dest+1 >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = 0xFFFD; } Loading @@ -142,16 +142,16 @@ NS_IMETHODIMP nsISO2022KRToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen } else if ((PRUint8) *src == 0x20 || (PRUint8) *src == 0x09) { // Allow space and tab between SO and SI (i.e. in Hangul segment) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; mState = mState_KSX1001_1992; *dest++ = (PRUnichar) *src; ++mRunLength; if(dest >= destEnd) goto error1; } else { // Everything else is invalid. *dest++ = 0xFFFD; if(dest >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = 0xFFFD; } break; Loading @@ -171,6 +171,8 @@ NS_IMETHODIMP nsISO2022KRToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen *dest++ = 0xFFFD; } else { if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; unsigned char ksx[2]; PRUnichar uni; PRInt32 ksxLen = 2, uniLen = 1; Loading @@ -184,8 +186,6 @@ NS_IMETHODIMP nsISO2022KRToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen *dest++ = uni; ++mRunLength; } if(dest >= destEnd) goto error1; mState = mState_KSX1001_1992; } else { // Invalid Loading @@ -195,17 +195,17 @@ NS_IMETHODIMP nsISO2022KRToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen else { mState = mState_KSX1001_1992; } *dest++ = 0xFFFD; if(dest >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = 0xFFFD; } break; case mState_ERROR: mState = mLastLegalState; *dest++ = 0xFFFD; if(dest >= destEnd) if (CHECK_OVERRUN(dest, destEnd, 1)) goto error1; *dest++ = 0xFFFD; break; } // switch Loading
intl/uconv/util/nsUCSupport.h +7 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,13 @@ #define ONE_BYTE_TABLE_SIZE 256 inline bool WillOverrun(PRUnichar* aDest, PRUnichar* aDestEnd, PRUint32 aLength) { NS_ASSERTION(aDest <= aDestEnd, "Pointer overrun even before check"); return ((aDestEnd - aDest) < aLength); } #define CHECK_OVERRUN(dest, destEnd, length) (WillOverrun(dest, destEnd, length)) #ifdef NS_DEBUG // {7AFC9F0A-CFE1-44ea-A755-E3B86AB1226E} #define NS_IBASICDECODER_IID \ Loading