From e36fec85566aecdd5f6b0320ebcfeb47d3c501bc Mon Sep 17 00:00:00 2001 From: Raven Szewczyk Date: Wed, 21 Sep 2022 16:43:50 +0100 Subject: Fix integer overflow in PAss when overclocking beyond MAX (#82) --- .../java/goodgenerator/blocks/tileEntity/PreciseAssembler.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/main/java/goodgenerator/blocks/tileEntity/PreciseAssembler.java b/src/main/java/goodgenerator/blocks/tileEntity/PreciseAssembler.java index 6af5ee9115..58988a7805 100644 --- a/src/main/java/goodgenerator/blocks/tileEntity/PreciseAssembler.java +++ b/src/main/java/goodgenerator/blocks/tileEntity/PreciseAssembler.java @@ -162,16 +162,18 @@ public class PreciseAssembler extends GT_MetaTileEntity_TooltipMultiBlockBase_EM super.onScrewdriverRightClick(aSide, aPlayer, aX, aY, aZ); } - protected void calculateOverclockedNessMultiPara(int aEUt, int aDuration, int mAmperage, long maxInputPower) { + protected void calculateOverclockedNessMultiPara(long aEUt, int aDuration, int mAmperage, long maxInputPower) { + // Prevent overclocking beyond MAX + maxInputPower = Math.min(maxInputPower, Integer.MAX_VALUE - 1); while (aEUt <= maxInputPower && aDuration >= 1) { aEUt = aEUt << 2; aDuration = aDuration >> 1; } aEUt = aEUt >> 2; aDuration = aDuration << 1; - if (aDuration == 0) aDuration = 1; - if (aEUt == maxInputPower) aEUt = (int) (maxInputPower * 0.9); - this.mEUt = aEUt; + if (aDuration <= 0) aDuration = 1; + if (aEUt == maxInputPower) aEUt = (long) (maxInputPower * 0.9); + this.mEUt = GT_Utility.safeInt(aEUt); this.mMaxProgresstime = aDuration; } -- cgit