in src/main/java/org/apache/accumulo/access/AccessEvaluatorImpl.java [59:96]
static String unescape(BytesWrapper auth) {
int escapeCharCount = 0;
for (int i = 0; i < auth.length(); i++) {
byte b = auth.byteAt(i);
if (isQuoteOrSlash(b)) {
escapeCharCount++;
}
}
if (escapeCharCount > 0) {
if (escapeCharCount % 2 == 1) {
throw new IllegalArgumentException("Illegal escape sequence in auth : " + auth);
}
byte[] unescapedCopy = new byte[auth.length() - escapeCharCount / 2];
int pos = 0;
for (int i = 0; i < auth.length(); i++) {
byte b = auth.byteAt(i);
if (b == BACKSLASH) {
i++;
b = auth.byteAt(i);
if (!isQuoteOrSlash(b)) {
throw new IllegalArgumentException("Illegal escape sequence in auth : " + auth);
}
} else if (isQuoteSymbol(b)) {
// should only see quote after a slash
throw new IllegalArgumentException(
"Illegal character after slash in auth String : " + auth);
}
unescapedCopy[pos++] = b;
}
return new String(unescapedCopy, UTF_8);
} else {
return auth.toString();
}
}