diff options
| author | jmestwa-coder <jmestwa@gmail.com> | 2026-05-30 06:06:14 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-05-30 06:06:14 +0300 |
| commit | bb94dc82d75cb48377b05f2813f74a9744eda9ab (patch) | |
| tree | 77d39e98d3eb92cc53fc6855906b5bc6617a3f69 /core | |
| parent | 4c7fba8de664ada5da1fa545856704a534d08f95 (diff) | |
| download | zxing-bb94dc82d75cb48377b05f2813f74a9744eda9ab.tar.xz | |
avoid out-of-bounds read for NS sequence in maxicode getMessage (#2079)
Diffstat (limited to 'core')
| -rw-r--r-- | core/src/main/java/com/google/zxing/maxicode/decoder/DecodedBitStreamParser.java | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/core/src/main/java/com/google/zxing/maxicode/decoder/DecodedBitStreamParser.java b/core/src/main/java/com/google/zxing/maxicode/decoder/DecodedBitStreamParser.java index 9ebf7e8a3..d62e5a910 100644 --- a/core/src/main/java/com/google/zxing/maxicode/decoder/DecodedBitStreamParser.java +++ b/core/src/main/java/com/google/zxing/maxicode/decoder/DecodedBitStreamParser.java @@ -158,7 +158,7 @@ final class DecodedBitStreamParser { return sb.toString(); } - private static String getMessage(byte[] bytes, int start, int len) { + private static String getMessage(byte[] bytes, int start, int len) throws FormatException { StringBuilder sb = new StringBuilder(); int shift = -1; int set = 0; @@ -194,6 +194,9 @@ final class DecodedBitStreamParser { shift = 3; break; case NS: + if (i + 5 >= start + len) { + throw FormatException.getFormatInstance(); + } int nsval = (bytes[++i] << 24) + (bytes[++i] << 18) + (bytes[++i] << 12) + (bytes[++i] << 6) + bytes[++i]; sb.append(new DecimalFormat("000000000").format(nsval)); break; |
