diff --git a/src/pke/lib/encoding/ckkspackedencoding.cpp b/src/pke/lib/encoding/ckkspackedencoding.cpp index 6763c4f1b..5ba8c764f 100644 --- a/src/pke/lib/encoding/ckkspackedencoding.cpp +++ b/src/pke/lib/encoding/ckkspackedencoding.cpp @@ -164,7 +164,10 @@ bool CKKSPackedEncoding::Encode() { re = re64 >> (-pRemaining); } else { - int128_t pPowRemaining = ((int128_t)1) << pRemaining; + if (pRemaining > 126) + OPENFHE_THROW("Invalid CKKS scaling shift"); + + int128_t pPowRemaining = static_cast(1) << pRemaining; re = pPowRemaining * re64; } @@ -175,7 +178,10 @@ bool CKKSPackedEncoding::Encode() { im = im64 >> (-pRemaining); } else { - int128_t pPowRemaining = (static_cast(1)) << pRemaining; + if (pRemaining > 126) + OPENFHE_THROW("Invalid CKKS scaling shift"); + + int128_t pPowRemaining = static_cast(1) << pRemaining; im = pPowRemaining * im64; } diff --git a/src/pke/lib/scheme/ckksrns/ckksrns-fhe.cpp b/src/pke/lib/scheme/ckksrns/ckksrns-fhe.cpp index 8f2772da7..dd691679d 100644 --- a/src/pke/lib/scheme/ckksrns/ckksrns-fhe.cpp +++ b/src/pke/lib/scheme/ckksrns/ckksrns-fhe.cpp @@ -2665,7 +2665,10 @@ Plaintext FHECKKSRNS::MakeAuxPlaintext(const CryptoContextImpl& cc, co re = re64 >> (-pRemaining); } else { - int128_t pPowRemaining = ((int128_t)1) << pRemaining; + if (pRemaining > 126) + OPENFHE_THROW("Invalid CKKS scaling shift"); + + int128_t pPowRemaining = static_cast(1) << pRemaining; re = pPowRemaining * re64; } @@ -2676,6 +2679,9 @@ Plaintext FHECKKSRNS::MakeAuxPlaintext(const CryptoContextImpl& cc, co im = im64 >> (-pRemaining); } else { + if (pRemaining > 126) + OPENFHE_THROW("Invalid CKKS scaling shift"); + int128_t pPowRemaining = static_cast(1) << pRemaining; im = pPowRemaining * im64; }