From c35e8e38ea42dd70ee33de2a99c04ae5d599f41c Mon Sep 17 00:00:00 2001 From: "srowen@gmail.com" Date: Thu, 23 May 2013 08:59:39 +0000 Subject: [PATCH] Avoid AIOOBE, again, with over large correction for nudge in corner cases git-svn-id: https://zxing.googlecode.com/svn/trunk@2809 59b500cc-1b3d-0410-9834-0bbf25fbcc57 --- core/src/com/google/zxing/qrcode/QRCodeReader.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/src/com/google/zxing/qrcode/QRCodeReader.java b/core/src/com/google/zxing/qrcode/QRCodeReader.java index 819ba85be..a25e663e2 100644 --- a/core/src/com/google/zxing/qrcode/QRCodeReader.java +++ b/core/src/com/google/zxing/qrcode/QRCodeReader.java @@ -149,10 +149,18 @@ public class QRCodeReader implements Reader { // But careful that this does not sample off the edge int nudgedTooFarRight = left + (int) ((matrixWidth - 1) * moduleSize) - (right - 1); if (nudgedTooFarRight > 0) { + if (nudgedTooFarRight > nudge) { + // Neither way fits; abort + throw NotFoundException.getNotFoundInstance(); + } left -= nudgedTooFarRight; } int nudgedTooFarDown = top + (int) ((matrixHeight - 1) * moduleSize) - (bottom - 1); if (nudgedTooFarDown > 0) { + if (nudgedTooFarDown > nudge) { + // Neither way fits; abort + throw NotFoundException.getNotFoundInstance(); + } top -= nudgedTooFarDown; }