You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "Brandon Berg (JIRA)" <ji...@apache.org> on 2017/04/19 06:34:41 UTC

[jira] [Created] (ZOOKEEPER-2763) Utils.toCsvBuffer() omits leading 0 for bytes < 0x10

Brandon Berg created ZOOKEEPER-2763:
---------------------------------------

             Summary: Utils.toCsvBuffer() omits leading 0 for bytes < 0x10
                 Key: ZOOKEEPER-2763
                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2763
             Project: ZooKeeper
          Issue Type: Bug
          Components: jute
    Affects Versions: 3.5.2
            Reporter: Brandon Berg
            Priority: Minor


org.apache.jute.Utils.toCsvBuffer(), which converts a byte array to a string containing the hex representation of that byte array, omits the leading zero for any byte less than 0x10, due to its use of Integer.toHexString, which has the same behavior.

https://github.com/apache/zookeeper/blob/master/src/java/main/org/apache/jute/Utils.java#L234

One consequence of this is that the hex strings printed by ClientCnxn.Packet.toString(), used in the debug logging for ClientCnxn.readResponse(), cannot be parsed to determine the result of a Zookeeper request from client debug logs.

Utils.toXmlBuffer() appears to have the same issue.

A simple proposed fix:

{code}
        for(int idx = 0; idx < barr.length; idx++) {
            // Insert the following three lines
            if (barr[idx] < 0x10) {
                sb.append('0');
            }
            sb.append(Integer.toHexString(barr[idx]));
        }
{code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)