[ https://issues.apache.org/jira/browse/HBASE-26613?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17462926#comment-17462926 ]
Duo Zhang commented on HBASE-26613: ----------------------------------- I think we need to reset carry to false at the beginning ofthe do while loop? > The logic of the method incrementIV in Encryption class has problem > ------------------------------------------------------------------- > > Key: HBASE-26613 > URL: https://issues.apache.org/jira/browse/HBASE-26613 > Project: HBase > Issue Type: Bug > Reporter: Yutong Xiao > Assignee: Yutong Xiao > Priority: Major > > {code:java} > public static void incrementIv(byte[] iv, int v) { > int length = iv.length; > boolean carry = true; > // TODO: Optimize for v > 1, e.g. 16, 32 > do { > for (int i = 0; i < length; i++) { > if (carry) { > iv[i] = (byte) ((iv[i] + 1) & 0xFF); > carry = 0 == iv[i]; > } else { > break; > } > } > v--; > } while (v > 0); > } > {code} > The carry flag is outside the while loop and the inner loop check the carry > value is true, so that the when it was set to false, it will spinning in the > last iteration. And the logic becomes whatever the v is, the IV will be > incremented by (1 or 2). As the description in todo, this function should > support increment value > 1. So that this is not what we expect I think. -- This message was sent by Atlassian Jira (v8.20.1#820001)