From: <sv...@op...> - 2024-06-07 17:00:14
|
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; |