[ https://issues.apache.org/jira/browse/MAPREDUCE-7333?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17316680#comment-17316680 ]
Ahmed Hussein commented on MAPREDUCE-7333: ------------------------------------------ [~Marcono1234] Thanks for spotting this bug. I suggest to delete {{toHex()}} implementation because it is not being used anywhere in the Hadoop trunk. If you find some code redundancy that could be improved by calling {{toHex()}}, then please go ahead with: * fixing the implementation * replace redundant code blocks with calls to {{toHex()}}. > SecureShuffleUtils.toHex(byte[]) creates malformed hex string > ------------------------------------------------------------- > > Key: MAPREDUCE-7333 > URL: https://issues.apache.org/jira/browse/MAPREDUCE-7333 > Project: Hadoop Map/Reduce > Issue Type: Bug > Affects Versions: 3.2.2 > Reporter: Marcono1234 > Assignee: Peter Bacsko > Priority: Major > > {{org.apache.hadoop.mapreduce.security.SecureShuffleUtils.toHex(byte[])}} > creates malformed hex strings: > {code} > for (byte b : ba) { > ps.printf("%x", b); > } > {code} > The pattern {{"%x"}} would for bytes < 16 only have on hex char and for > example both {{1, 0}} and {{16}} would have the result {{"10"}}. > A correct (and more efficient) implementation would be: > {code} > public static String toHex(byte[] ba) { > StringBuilder sb = new StringBuilder(ba.length * 2); > for (byte b : ba) { > int unsignedB = b & 0xFF; > if (unsignedB < 16) { > sb.append('0'); > } > sb.append(Integer.toHexString(unsignedB)); > } > return sb.toString(); > } > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: mapreduce-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: mapreduce-issues-h...@hadoop.apache.org