Skip to content

Commit d688c88

Browse files
committed
Fixing type casting in multipart download checksum validation
1 parent a7f3e01 commit d688c88

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

src/aws-cpp-sdk-transfer/source/transfer/TransferManager.cpp

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1338,18 +1338,21 @@ namespace Aws
13381338
auto partResult = hash->GetHash();
13391339
auto partData = partResult.GetResult();
13401340

1341-
auto partCrc = isCRC64 ?
1342-
*reinterpret_cast<const unsigned long long*>(partData.GetUnderlyingData()) :
1343-
*reinterpret_cast<const unsigned int*>(partData.GetUnderlyingData());
1344-
13451341
if (combinedChecksum == 0) {
1346-
combinedChecksum = partCrc;
1342+
if (isCRC64) {
1343+
combinedChecksum = *reinterpret_cast<const unsigned long long*>(partData.GetUnderlyingData());
1344+
} else {
1345+
combinedChecksum = *reinterpret_cast<const unsigned int*>(partData.GetUnderlyingData());
1346+
}
13471347
} else {
13481348
if (m_transferConfig.checksumAlgorithm == S3::Model::ChecksumAlgorithm::CRC32) {
1349-
combinedChecksum = Aws::Crt::Checksum::CombineCRC32(combinedChecksum, partCrc, partSize);
1349+
auto partCrc = *reinterpret_cast<const unsigned int*>(partData.GetUnderlyingData());
1350+
combinedChecksum = Aws::Crt::Checksum::CombineCRC32(static_cast<uint32_t>(combinedChecksum), partCrc, partSize);
13501351
} else if (m_transferConfig.checksumAlgorithm == S3::Model::ChecksumAlgorithm::CRC32C) {
1351-
combinedChecksum = Aws::Crt::Checksum::CombineCRC32C(combinedChecksum, partCrc, partSize);
1352+
auto partCrc = *reinterpret_cast<const unsigned int*>(partData.GetUnderlyingData());
1353+
combinedChecksum = Aws::Crt::Checksum::CombineCRC32C(static_cast<uint32_t>(combinedChecksum), partCrc, partSize);
13521354
} else if (isCRC64) {
1355+
auto partCrc = *reinterpret_cast<const unsigned long long*>(partData.GetUnderlyingData());
13531356
combinedChecksum = Aws::Crt::Checksum::CombineCRC64NVME(combinedChecksum, partCrc, partSize);
13541357
}
13551358
}

0 commit comments

Comments
 (0)