Replace magicValue with constant variable

main
Luis Díaz Más 4 years ago
parent ceae86899d
commit ec21f65dca

@ -54,6 +54,9 @@ iTXt chunk : http://www.vias.org/pngguide/chapter11_05.html
PNG tags : http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/PNG.html#TextualData PNG tags : http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/PNG.html#TextualData
*/ */
namespace {
constexpr int nullSeparators = 2;
}
// ***************************************************************************** // *****************************************************************************
// class member definitions // class member definitions
@ -71,7 +74,7 @@ namespace Exiv2 {
*outWidth = data.read_uint32(0, bigEndian); *outWidth = data.read_uint32(0, bigEndian);
*outHeight = data.read_uint32(4, bigEndian); *outHeight = data.read_uint32(4, bigEndian);
} // PngChunk::decodeIHDRChunk }
void PngChunk::decodeTXTChunk(Image* pImage, void PngChunk::decodeTXTChunk(Image* pImage,
const DataBuf& data, const DataBuf& data,
@ -86,7 +89,7 @@ namespace Exiv2 {
#endif #endif
parseChunkContent(pImage, key.c_data(), key.size(), arr); parseChunkContent(pImage, key.c_data(), key.size(), arr);
} // PngChunk::decodeTXTChunk }
DataBuf PngChunk::decodeTXTChunk(const DataBuf& data, DataBuf PngChunk::decodeTXTChunk(const DataBuf& data,
TxtChunkType type) TxtChunkType type)
@ -99,7 +102,7 @@ namespace Exiv2 {
#endif #endif
return parseTXTChunk(data, key.size(), type); return parseTXTChunk(data, key.size(), type);
} // PngChunk::decodeTXTChunk }
DataBuf PngChunk::keyTXTChunk(const DataBuf& data, bool stripHeader) DataBuf PngChunk::keyTXTChunk(const DataBuf& data, bool stripHeader)
{ {
@ -129,7 +132,7 @@ namespace Exiv2 {
if(type == zTXt_Chunk) if(type == zTXt_Chunk)
{ {
enforce(data.size() >= Safe::add(keysize, 2), Exiv2::kerCorruptedMetadata); enforce(data.size() >= Safe::add(keysize, nullSeparators), Exiv2::kerCorruptedMetadata);
// Extract a deflate compressed Latin-1 text chunk // Extract a deflate compressed Latin-1 text chunk
@ -145,8 +148,8 @@ namespace Exiv2 {
} }
// compressed string after the compression technique spec // compressed string after the compression technique spec
const byte* compressedText = data.c_data(keysize + 2); const byte* compressedText = data.c_data(keysize + nullSeparators);
long compressedTextSize = data.size() - keysize - 2; long compressedTextSize = data.size() - keysize - nullSeparators;
enforce(compressedTextSize < data.size(), kerCorruptedMetadata); enforce(compressedTextSize < data.size(), kerCorruptedMetadata);
zlibUncompress(compressedText, compressedTextSize, arr); zlibUncompress(compressedText, compressedTextSize, arr);
@ -165,8 +168,8 @@ namespace Exiv2 {
else if(type == iTXt_Chunk) else if(type == iTXt_Chunk)
{ {
enforce(data.size() >= Safe::add(keysize, 3), Exiv2::kerCorruptedMetadata); enforce(data.size() >= Safe::add(keysize, 3), Exiv2::kerCorruptedMetadata);
const size_t nullSeparators = std::count(data.c_data(keysize+3), data.c_data(data.size()), '\0'); const size_t nullCount = std::count(data.c_data(keysize+3), data.c_data(data.size()), '\0');
enforce(nullSeparators >= 2, Exiv2::kerCorruptedMetadata); enforce(nullCount >= nullSeparators, Exiv2::kerCorruptedMetadata);
// Extract a deflate compressed or uncompressed UTF-8 text chunk // Extract a deflate compressed or uncompressed UTF-8 text chunk
@ -235,8 +238,7 @@ namespace Exiv2 {
} }
return arr; return arr;
}
} // PngChunk::parsePngChunk
void PngChunk::parseChunkContent(Image* pImage, const byte* key, long keySize, const DataBuf& arr) void PngChunk::parseChunkContent(Image* pImage, const byte* key, long keySize, const DataBuf& arr)
{ {

Loading…
Cancel
Save