wincng: add and improve checks in bit counting function
Этот коммит содержится в:
родитель
e7d5439119
Коммит
6c99a18577
@ -2052,21 +2052,18 @@ _libssh2_wincng_bignum_bits(const _libssh2_bn *bn)
|
|||||||
unsigned char number;
|
unsigned char number;
|
||||||
unsigned long offset, length, bits;
|
unsigned long offset, length, bits;
|
||||||
|
|
||||||
if(!bn)
|
if(!bn || !bn->bignum || !bn->length)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
length = bn->length - 1;
|
|
||||||
|
|
||||||
offset = 0;
|
offset = 0;
|
||||||
while(!(*(bn->bignum + offset)) && (offset < length))
|
length = bn->length - 1;
|
||||||
|
while(!bn->bignum[offset] && offset < length)
|
||||||
offset++;
|
offset++;
|
||||||
|
|
||||||
bits = (length - offset) * 8;
|
bits = (length - offset) * 8;
|
||||||
number = bn->bignum[offset];
|
number = bn->bignum[offset];
|
||||||
|
|
||||||
while(number >>= 1)
|
while(number >>= 1)
|
||||||
bits++;
|
bits++;
|
||||||
|
|
||||||
bits++;
|
bits++;
|
||||||
|
|
||||||
return bits;
|
return bits;
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user