From 5d5a8e20fcc278c956b6a9d0dd7ebb08cbe203ea Mon Sep 17 00:00:00 2001 From: Sean Owen Date: Thu, 6 Feb 2014 00:00:20 -0500 Subject: [PATCH] Handle invalid VIN-like data in Code 39 barcodes --- .../zxing/client/result/VINResultParser.java | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/core/src/main/java/com/google/zxing/client/result/VINResultParser.java b/core/src/main/java/com/google/zxing/client/result/VINResultParser.java index 58c5ee3c5..0d1314cb6 100644 --- a/core/src/main/java/com/google/zxing/client/result/VINResultParser.java +++ b/core/src/main/java/com/google/zxing/client/result/VINResultParser.java @@ -41,20 +41,23 @@ public final class VINResultParser extends ResultParser { if (!AZ09.matcher(rawText).matches()) { return null; } - if (!checkChecksum(rawText)) { + try { + if (!checkChecksum(rawText)) { + return null; + } + String wmi = rawText.substring(0, 3); + return new VINParsedResult(rawText, + wmi, + rawText.substring(3, 9), + rawText.substring(9, 17), + countryCode(wmi), + rawText.substring(3, 8), + modelYear(rawText.charAt(9)), + rawText.charAt(10), + rawText.substring(11)); + } catch (IllegalArgumentException iae) { return null; } - - String wmi = rawText.substring(0, 3); - return new VINParsedResult(rawText, - wmi, - rawText.substring(3, 9), - rawText.substring(9, 17), - countryCode(wmi), - rawText.substring(3, 8), - modelYear(rawText.charAt(9)), - rawText.charAt(10), - rawText.substring(11)); } private static boolean checkChecksum(CharSequence vin) {