[ 
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)

Reply via email to