Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
In TabletServer.java: 667
return security.userHasAuthorizations(credentials, Collections.<ByteBuffer> singletonList(ByteBuffer.wrap(***auth.getBackingArray()***)));
(Emphasis mine obviously)
That getBackingArray() will return the whole array even when the auth object has limits set upon it. That has the effect of passing labels to userHasAuthorization() that are incorrect. For instance, if your label expression has & and | in it, it will pass the entire string as the label string, as opposed to just one part of it in certain parts of the parsing.
The fix is to also use the auth.offset() and auth.length() parameters when building the ByteBuffer. Patch coming.