From 0c3ab291c437bb80e948456905188d5d167aa8d0 Mon Sep 17 00:00:00 2001 From: orbiter Date: Tue, 17 Mar 2009 22:20:58 +0000 Subject: [PATCH] fix for http://forum.yacy-websuche.de/viewtopic.php?p=13354#p13354 git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@5725 6c8d7289-2bf4-0310-a012-ef5d649a1542 --- source/de/anomic/kelondro/order/Base64Order.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/source/de/anomic/kelondro/order/Base64Order.java b/source/de/anomic/kelondro/order/Base64Order.java index c8c31709c..055cb27d3 100644 --- a/source/de/anomic/kelondro/order/Base64Order.java +++ b/source/de/anomic/kelondro/order/Base64Order.java @@ -258,7 +258,14 @@ public class Base64Order extends AbstractOrder implements ByteOrder, Cod long c = 0; int lim = off + Math.min(10, len); int lim10 = off + 10; - while (off < lim) c = (c << 6) | ahpla[key[off++]]; + byte b; + while (off < lim) { + b = key[off++]; + if (b < 0) return -1; + b = ahpla[b]; + if (b < 0) return -1; + c = (c << 6) | b; + } while (off++ < lim10) c = (c << 6); c = c << 3; assert c >= 0; @@ -281,7 +288,12 @@ public class Base64Order extends AbstractOrder implements ByteOrder, Cod // returns a cardinal number in the range of 0 .. Long.MAX_VALUE long c = 0; int p = 0; - while ((p < 10) && (p < key.length())) c = (c << 6) | ahpla[key.charAt(p++)]; + byte b; + while ((p < 10) && (p < key.length())) { + b = ahpla[key.charAt(p++)]; + if (b < 0) return -1; + c = (c << 6) |b; + } while (p++ < 10) c = (c << 6); c = c << 3; assert c >= 0;