Throw out non-digit barcodes for strict check
authorThomas Berezansky <tsbere@mvlc.org>
Thu, 22 Sep 2011 13:24:56 +0000 (09:24 -0400)
committerMike Rylander <mrylander@gmail.com>
Tue, 15 Nov 2011 20:01:05 +0000 (15:01 -0500)
Characters like "." are valid for numbers, but not the algorithm.

Thus, we need to throw out "16.00" despite the check for
"16.00" == Number("16.00")
returning true.

Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Open-ILS/xul/staff_client/chrome/content/util/barcode.js

index 4d88807..8d30a20 100644 (file)
@@ -11,6 +11,9 @@ util.barcode.EXPORT_TAGS    = { ':all' : util.barcode.EXPORT_OK };
 util.barcode.check = function(bc) {
     if (bc != Number(bc)) return false;
     bc = bc.toString();
+    // "16.00" == Number("16.00"), but the . is bad.
+    // Throw out any barcode that isn't just digits
+    if (bc.search(/\D/) != -1) return false;
     var last_digit = bc.substr(bc.length-1);
     var stripped_barcode = bc.substr(0,bc.length-1);
     return util.barcode.checkdigit(stripped_barcode).toString() == last_digit;