Author: sagamusix
Date: Fri Jun 7 19:00:02 2024
New Revision: 20946
URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20946
Log:
Merged revision(s) 20945 from trunk/OpenMPT:
[Var] ancient: Update to v2.2.0 (2023-06-07).
........
Modified:
branches/OpenMPT-1.31/ (props changed)
branches/OpenMPT-1.31/include/ancient/LICENSE
branches/OpenMPT-1.31/include/ancient/OpenMPT.txt
branches/OpenMPT-1.31/include/ancient/src/PPDecompressor.cpp
branches/OpenMPT-1.31/include/ancient/src/PPDecompressor.hpp
Modified: branches/OpenMPT-1.31/include/ancient/LICENSE
==============================================================================
--- branches/OpenMPT-1.31/include/ancient/LICENSE Fri Jun 7 18:59:35 2024 (r20945)
+++ branches/OpenMPT-1.31/include/ancient/LICENSE Fri Jun 7 19:00:02 2024 (r20946)
@@ -1,6 +1,6 @@
BSD 2-Clause License
-Copyright (c) 2017-2023, Teemu Suutari
+Copyright (c) 2017-2024, Teemu Suutari
All rights reserved.
Redistribution and use in source and binary forms, with or without
Modified: branches/OpenMPT-1.31/include/ancient/OpenMPT.txt
==============================================================================
--- branches/OpenMPT-1.31/include/ancient/OpenMPT.txt Fri Jun 7 18:59:35 2024 (r20945)
+++ branches/OpenMPT-1.31/include/ancient/OpenMPT.txt Fri Jun 7 19:00:02 2024 (r20946)
@@ -1,3 +1,2 @@
- * ancient <https://github.com/temisu/ancient> commit
- bdff39426d0460a6b114712b14da6cb40ccadb77 (2024-06-05)
+ * ancient <https://github.com/temisu/ancient> v2.2.0 (2024-06-07)
* Unnecssary files have been removed.
Modified: branches/OpenMPT-1.31/include/ancient/src/PPDecompressor.cpp
==============================================================================
--- branches/OpenMPT-1.31/include/ancient/src/PPDecompressor.cpp Fri Jun 7 18:59:35 2024 (r20945)
+++ branches/OpenMPT-1.31/include/ancient/src/PPDecompressor.cpp Fri Jun 7 19:00:02 2024 (r20946)
@@ -233,7 +233,7 @@
In any case this should serve as a warning to anyone trying to create their own crypto.
*/
-void PPDecompressor::findKeyRound(BackwardInputStream &inputStream,LSBBitReader<BackwardInputStream> &bitReader,uint32_t keyBits,uint32_t keyMask,uint32_t outputPosition)
+void PPDecompressor::findKeyRound(BackwardInputStream &inputStream,LSBBitReader<BackwardInputStream> &bitReader,uint32_t keyBits,uint32_t keyMask,uint32_t outputPosition,uint32_t &iterCount)
{
uint32_t inputOffset;
@@ -268,7 +268,7 @@
// try 0
inputStream.setOffset(inputOffset);
bitReader.reset(bufContent,bufLength);
- findKeyRound(inputStream,bitReader,keyBits,keyMask|(1U<<bitPos),savedOutputPosition);
+ findKeyRound(inputStream,bitReader,keyBits,keyMask|(1U<<bitPos),savedOutputPosition,iterCount);
// try 1
inputStream.setOffset(tmpInputOffset);
@@ -318,9 +318,8 @@
bitReader.readBitsBE32(count);
};
- uint32_t foundIter=0;
// TODO: Random constant. For decompression/keyfinding bombs
- while (foundIter<1024)
+ while (iterCount<1048576)
{
// this is the checkpoint. Hardly ideal, but best we can do without co-routines
inputOffset=uint32_t(inputStream.getOffset());
@@ -371,7 +370,7 @@
if (failed) break;
outputPosition-=count;
- if (keyMask==0xffff'ffffU) foundIter++;
+ iterCount++;
}
if (failed) return;
// If not all bits are resolved, that is bad
@@ -386,7 +385,8 @@
bitReader.readBitsBE32(_startShift);
- findKeyRound(inputStream,bitReader,keyBits,keyMask,uint32_t(_rawSize));
+ uint32_t iterCount=0;
+ findKeyRound(inputStream,bitReader,keyBits,keyMask,uint32_t(_rawSize),iterCount);
}
void PPDecompressor::decompressImpl(Buffer &rawData,bool verify)
Modified: branches/OpenMPT-1.31/include/ancient/src/PPDecompressor.hpp
==============================================================================
--- branches/OpenMPT-1.31/include/ancient/src/PPDecompressor.hpp Fri Jun 7 18:59:35 2024 (r20945)
+++ branches/OpenMPT-1.31/include/ancient/src/PPDecompressor.hpp Fri Jun 7 19:00:02 2024 (r20946)
@@ -57,7 +57,7 @@
uint32_t _key;
};
- void findKeyRound(BackwardInputStream &inputStream,LSBBitReader<BackwardInputStream> &bitReader,uint32_t keyBits,uint32_t keyMask,uint32_t outputPosition);
+ void findKeyRound(BackwardInputStream &inputStream,LSBBitReader<BackwardInputStream> &bitReader,uint32_t keyBits,uint32_t keyMask,uint32_t outputPosition,uint32_t &iterCount);
void findKey(uint32_t keyBits,uint32_t keyMask);
const Buffer &_packedData;
|