[
https://issues.apache.org/jira/browse/ZOOKEEPER-3007?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16453098#comment-16453098
]
ASF GitHub Bot commented on ZOOKEEPER-3007:
-------------------------------------------
Github user phunt commented on the issue:
https://github.com/apache/zookeeper/pull/495
Ok, that (call site analysis) makes sense.
I'm afraid I was unclear, when I said
"You don't need an ERROR in the text here or on the next line."
What I mean is that the text string should not start with "ERROR" given the
error string is in an exception and the logging (from one of the callers) will
determine the severity to assign. As such my recommendation would be something
like:
> throw new RuntimeException("Incorrect format of InputArchive when
deserialize DataTree - missing acls");
Notice: 1) the removal of "ERROR" and the addition of "missing acls" in
order to give the person diagnosing the problem a bit more insight (otw they
have to find the source line in order to get more insight into what they
formatting issue might be).
If you clear this up (this one line) I think we should be good for commit.
Thanks!
> Potential NPE in ReferenceCountedACLCache#deserialize
> ------------------------------------------------------
>
> Key: ZOOKEEPER-3007
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-3007
> Project: ZooKeeper
> Issue Type: Bug
> Affects Versions: 3.6.0
> Reporter: lujie
> Priority: Major
>
> Inspired by ZK-3006 , I develop a simple static analysis tool to find other
> Potential NPE like ZK-3006. This bug is found by this tool ,and I have
> carefully studied it. But i am a newbie at here so i may be wrong, hope
> someone could confirm it and help me improve this tool.
> h3. Bug describtion:
> callee BinaryInputArchive#startVector will return null:
> {code:java}
> // code placeholder
> public Index startVector(String tag) throws IOException {
> int len = readInt(tag);
> if (len == -1) {
> return null;
> }
> {code}
> and caller ReferenceCountedACLCache#deserialize call it without null check
> {code:java}
> // code placeholder
> Index j = ia.startVector("acls");
> while (!j.done()) {
> ACL acl = new ACL();
> acl.deserialize(ia, "acl");
> }{code}
> but all the other 14 caller of BinaryInputArchive#startVector performs null
> checker like:
> {code:java}
> // code placeholder
> Index vidx1 = a_.startVector("acl");
> if (vidx1!= null)
> for (; !vidx1.done(); vidx1.incr()){
> .....
> }
> }
> }
> {code}
> so i think we also need add null check in caller
> ReferenceCountedACLCache#deserialize just like other 14 caller
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)