push
github
box: fix misleading errors on privilege revoke from admin Trying to revoke privileges from an admin user or a super role results in misleading errors: ``` error: 'Tuple field 5 (privilege) type does not match one required by operation: expected unsigned, got integer' ``` The reason is that privileges use bit module for privilege grant/revoke, and this module operates 32-bit **signed** integers (see https://bitop.luajit.org/semantics.html#range for details). So any bit operation on a privilege set greater than 2^31 (for example, box.priv.ALL == 2^32 - 1) results in a negative number: ```lua tarantool> bit.band(box.priv.ALL, bit.bnot(box.priv.W)) --- - -3 ... ``` Fortunately, this can be fixed by casting one of the operands to a uint64_t type, so let's cast all granted or revoked privileges prior to calculating the resulting privilege set. Closes #11526 NO_DOC=bugfix (cherry picked from commit 8de5bae07)
70542 of 124275 branches covered (56.76%)
103707 of 118478 relevant lines covered (87.53%)
1372126.67 hits per line