1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.hadoop.hbase.security.visibility;
19
20 import org.apache.hadoop.classification.InterfaceAudience;
21
22
23
24
25 @InterfaceAudience.Private
26 public class VisibilityLabelsValidator {
27
28 private static final boolean[] validAuthChars = new boolean[256];
29
30 static {
31 for (int i = 0; i < 256; i++) {
32 validAuthChars[i] = false;
33 }
34
35 for (int i = 'a'; i <= 'z'; i++) {
36 validAuthChars[i] = true;
37 }
38
39 for (int i = 'A'; i <= 'Z'; i++) {
40 validAuthChars[i] = true;
41 }
42
43 for (int i = '0'; i <= '9'; i++) {
44 validAuthChars[i] = true;
45 }
46
47 validAuthChars['_'] = true;
48 validAuthChars['-'] = true;
49 validAuthChars[':'] = true;
50 validAuthChars['.'] = true;
51 validAuthChars['/'] = true;
52 }
53
54 static final boolean isValidAuthChar(byte b) {
55 return validAuthChars[0xff & b];
56 }
57
58 static final boolean isValidLabel(byte[] label) {
59 for (int i = 0; i < label.length; i++) {
60 if (!isValidAuthChar(label[i])) {
61 return false;
62 }
63 }
64 return true;
65 }
66 }