mirror of
https://github.com/status-im/QR-Code-generator.git
synced 2026-08-31 01:31:10 +00:00
Fixed QrSegment.getTotalBits() Java logic to catch integer overflow correctly (related to the C++ fix in commit 873652a82f).
This commit is contained in:
@@ -189,16 +189,18 @@ public final class QrSegment {
|
||||
if (version < 1 || version > 40)
|
||||
throw new IllegalArgumentException("Version number out of range");
|
||||
|
||||
int result = 0;
|
||||
long result = 0;
|
||||
for (QrSegment seg : segs) {
|
||||
Objects.requireNonNull(seg);
|
||||
int ccbits = seg.mode.numCharCountBits(version);
|
||||
// Fail if segment length value doesn't fit in the length field's bit-width
|
||||
if (seg.numChars >= (1 << ccbits))
|
||||
return -1;
|
||||
result += 4 + ccbits + seg.bitLength;
|
||||
result += 4L + ccbits + seg.bitLength;
|
||||
if (result > Integer.MAX_VALUE)
|
||||
return -1;
|
||||
}
|
||||
return result;
|
||||
return (int)result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user