From c604fd3cc86d11e3336d0905c6b987454b267d58 Mon Sep 17 00:00:00 2001 From: zamalaev Date: Thu, 20 Feb 2020 21:00:00 +0000 Subject: [PATCH] Fixed output of BigNumber::AsByteArray when generated array is shorter than requested size thx Shauren --- src/shared/Auth/BigNumber.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/shared/Auth/BigNumber.cpp b/src/shared/Auth/BigNumber.cpp index fa3b4d1f0..a049ce2c7 100644 --- a/src/shared/Auth/BigNumber.cpp +++ b/src/shared/Auth/BigNumber.cpp @@ -198,23 +198,20 @@ uint8* BigNumber::AsByteArray(int minSize) uint8 *BigNumber::AsByteArray(int minSize, bool reverse) { - int length = (minSize >= GetNumBytes()) ? minSize : GetNumBytes(); + int numBytes = GetNumBytes(); + int length = (minSize >= numBytes) ? minSize : numBytes; - if (_array) - { - delete[] _array; - _array = NULL; - } + delete[] _array; _array = new uint8[length]; // If we need more bytes than length of BigNumber set the rest to 0 - if (length > GetNumBytes()) + if (length > numBytes) memset((void*)_array, 0, length); - BN_bn2bin(_bn, (unsigned char *)_array); + BN_bn2bin(_bn, (unsigned char*)_array); if (reverse) - std::reverse(_array, _array + length); + std::reverse(_array, _array + numBytes); return _array; }