Merge topic 'base64-casts'

0bdd4ebf cmCTest: Use size_t for cmsysBase64_Encode return value
a9fae8ac CTest: Fix integer overflow when uploading huge files
This commit is contained in:
Brad King 2015-01-08 14:57:41 -05:00 committed by CMake Topic Stage
commit dc451574c6
3 changed files with 10 additions and 12 deletions

View File

@ -116,10 +116,10 @@ void cmCTestRunTest::CompressOutput()
unsigned char *encoded_buffer unsigned char *encoded_buffer
= new unsigned char[static_cast<int>(outSize * 1.5)]; = new unsigned char[static_cast<int>(outSize * 1.5)];
unsigned long rlen size_t rlen
= cmsysBase64_Encode(out, strm.total_out, encoded_buffer, 1); = cmsysBase64_Encode(out, strm.total_out, encoded_buffer, 1);
for(unsigned long i = 0; i < rlen; i++) for(size_t i = 0; i < rlen; i++)
{ {
this->CompressedOutput += encoded_buffer[i]; this->CompressedOutput += encoded_buffer[i];
} }

View File

@ -1976,9 +1976,8 @@ std::string cmCTestTestHandler::GenerateRegressionImages(
= new unsigned char [ static_cast<int>( = new unsigned char [ static_cast<int>(
static_cast<double>(len) * 1.5 + 5.0) ]; static_cast<double>(len) * 1.5 + 5.0) ];
unsigned long rlen size_t rlen
= cmsysBase64_Encode(file_buffer, len, encoded_buffer, 1); = cmsysBase64_Encode(file_buffer, len, encoded_buffer, 1);
unsigned long cc;
ostr ostr
<< "\t\t\t<NamedMeasurement" << "\t\t\t<NamedMeasurement"
@ -1988,7 +1987,7 @@ std::string cmCTestTestHandler::GenerateRegressionImages(
<< measurementfile.match(4) << "\"" << measurementfile.match(4) << "\""
<< " encoding=\"base64\"" << " encoding=\"base64\""
<< ">" << std::endl << "\t\t\t\t<Value>"; << ">" << std::endl << "\t\t\t\t<Value>";
for ( cc = 0; cc < rlen; cc ++ ) for (size_t cc = 0; cc < rlen; cc ++ )
{ {
ostr << encoded_buffer[cc]; ostr << encoded_buffer[cc];
if ( cc % 60 == 0 && cc ) if ( cc % 60 == 0 && cc )

View File

@ -1688,7 +1688,7 @@ std::string cmCTest::Base64GzipEncodeFile(std::string file)
//---------------------------------------------------------------------- //----------------------------------------------------------------------
std::string cmCTest::Base64EncodeFile(std::string file) std::string cmCTest::Base64EncodeFile(std::string file)
{ {
long len = cmSystemTools::FileLength(file); size_t const len = cmSystemTools::FileLength(file);
cmsys::ifstream ifs(file.c_str(), std::ios::in cmsys::ifstream ifs(file.c_str(), std::ios::in
#ifdef _WIN32 #ifdef _WIN32
| std::ios::binary | std::ios::binary
@ -1699,14 +1699,13 @@ std::string cmCTest::Base64EncodeFile(std::string file)
ifs.close(); ifs.close();
unsigned char *encoded_buffer unsigned char *encoded_buffer
= new unsigned char [ static_cast<int>( = new unsigned char [ (len * 3) / 2 + 5 ];
static_cast<double>(len) * 1.5 + 5.0) ];
unsigned long rlen size_t const rlen
= cmsysBase64_Encode(file_buffer, len, encoded_buffer, 1); = cmsysBase64_Encode(file_buffer, len, encoded_buffer, 1);
std::string base64 = ""; std::string base64 = "";
for(unsigned long i = 0; i < rlen; i++) for(size_t i = 0; i < rlen; i++)
{ {
base64 += encoded_buffer[i]; base64 += encoded_buffer[i];
} }
@ -3190,9 +3189,9 @@ bool cmCTest::CompressString(std::string& str)
// Now base64 encode the resulting binary string // Now base64 encode the resulting binary string
unsigned char* base64EncodedBuffer unsigned char* base64EncodedBuffer
= new unsigned char[static_cast<int>(outSize * 1.5)]; = new unsigned char[(outSize * 3) / 2];
unsigned long rlen size_t rlen
= cmsysBase64_Encode(out, strm.total_out, base64EncodedBuffer, 1); = cmsysBase64_Encode(out, strm.total_out, base64EncodedBuffer, 1);
str = ""; str = "";