Author: scantor Date: Thu Jul 6 17:53:23 2017 New Revision: 1801088 URL: http://svn.apache.org/viewvc?rev=1801088&view=rev Log: XERCESC-2105 - Fix potential size_t overflows
Modified: xerces/c/trunk/src/xercesc/util/Base64.cpp Modified: xerces/c/trunk/src/xercesc/util/Base64.cpp URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/util/Base64.cpp?rev=1801088&r1=1801087&r2=1801088&view=diff ============================================================================== --- xerces/c/trunk/src/xercesc/util/Base64.cpp (original) +++ xerces/c/trunk/src/xercesc/util/Base64.cpp Thu Jul 6 17:53:23 2017 @@ -143,15 +143,20 @@ XMLByte* Base64::encode(const XMLByte* c , XMLSize_t* outputLength , MemoryManager* const memMgr) { - if (!inputData || !outputLength) + if (!inputData || !outputLength) { return 0; + } + else if (XERCES_SIZE_MAX - inputLength < 2) { + return 0; + } - int quadrupletCount = ( (int)inputLength + 2 ) / 3; - if (quadrupletCount == 0) + XMLSize_t quadrupletCount = (inputLength + 2 ) / 3; + if (quadrupletCount == 0) { return 0; + } // number of rows in encoded stream ( including the last one ) - int lineCount = ( quadrupletCount + quadsPerLine-1 ) / quadsPerLine; + XMLSize_t lineCount = ( quadrupletCount + quadsPerLine-1 ) / quadsPerLine; // // convert the triplet(s) to quadruplet(s) @@ -165,7 +170,7 @@ XMLByte* Base64::encode(const XMLByte* c // // Process all quadruplet(s) except the last // - int quad = 1; + XMLSize_t quad = 1; for (; quad <= quadrupletCount-1; quad++ ) { // read triplet from the input stream @@ -512,7 +517,7 @@ XMLByte* Base64::decode ( const XMLByt if (( rawInputLength % FOURBYTE ) != 0 ) return 0; - int quadrupletCount = (int)rawInputLength / FOURBYTE; + XMLSize_t quadrupletCount = rawInputLength / FOURBYTE; if ( quadrupletCount == 0 ) return 0; @@ -529,7 +534,7 @@ XMLByte* Base64::decode ( const XMLByt // // Process all quadruplet(s) except the last // - int quad = 1; + XMLSize_t quad = 1; for (; quad <= quadrupletCount-1; quad++ ) { // read quadruplet from the input stream --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@xerces.apache.org For additional commands, e-mail: commits-h...@xerces.apache.org