Fixed Wsign-compare warnings

This commit is contained in:
akallabeth 2022-12-05 08:58:38 +01:00 committed by Bernhard Miklautz
parent bd7e2263ad
commit 7ab917dca8
15 changed files with 49 additions and 53 deletions

View File

@ -337,8 +337,8 @@ static UINT rdpsnd_server_initialize(RdpsndServerContext* context, BOOL ownThrea
*/ */
static UINT rdpsnd_server_select_format(RdpsndServerContext* context, UINT16 client_format_index) static UINT rdpsnd_server_select_format(RdpsndServerContext* context, UINT16 client_format_index)
{ {
int bs; size_t bs;
int out_buffer_size; size_t out_buffer_size;
AUDIO_FORMAT* format; AUDIO_FORMAT* format;
UINT error = CHANNEL_RC_OK; UINT error = CHANNEL_RC_OK;

View File

@ -197,7 +197,8 @@ static BOOL tsmf_ffmpeg_init_stream(ITSMFDecoder* decoder, const TS_AM_MEDIA_TYP
/* The extradata format that FFmpeg uses is following CodecPrivate in Matroska. /* The extradata format that FFmpeg uses is following CodecPrivate in Matroska.
See http://haali.su/mkv/codecs.pdf */ See http://haali.su/mkv/codecs.pdf */
p = mdecoder->codec_context->extradata; p = mdecoder->codec_context->extradata;
if (mdecoder->codec_context->extradata_size < required) if ((mdecoder->codec_context->extradata_size < 0) ||
((size_t)mdecoder->codec_context->extradata_size < required))
return FALSE; return FALSE;
*p++ = 1; /* Reserved? */ *p++ = 1; /* Reserved? */
*p++ = media_type->ExtraData[8]; /* Profile */ *p++ = media_type->ExtraData[8]; /* Profile */
@ -208,18 +209,21 @@ static BOOL tsmf_ffmpeg_init_stream(ITSMFDecoder* decoder, const TS_AM_MEDIA_TYP
s = media_type->ExtraData + 20; s = media_type->ExtraData + 20;
size = ((UINT32)(*s)) * 256 + ((UINT32)(*(s + 1))); size = ((UINT32)(*s)) * 256 + ((UINT32)(*(s + 1)));
required += size + 2; required += size + 2;
if (mdecoder->codec_context->extradata_size < required) if ((mdecoder->codec_context->extradata_size < 0) ||
((size_t)mdecoder->codec_context->extradata_size < required))
return FALSE; return FALSE;
memcpy(p, s, size + 2); memcpy(p, s, size + 2);
s += size + 2; s += size + 2;
p += size + 2; p += size + 2;
required++; required++;
if (mdecoder->codec_context->extradata_size < required) if ((mdecoder->codec_context->extradata_size < 0) ||
((size_t)mdecoder->codec_context->extradata_size < required))
return FALSE; return FALSE;
*p++ = 1; /* #pps */ *p++ = 1; /* #pps */
size = ((UINT32)(*s)) * 256 + ((UINT32)(*(s + 1))); size = ((UINT32)(*s)) * 256 + ((UINT32)(*(s + 1)));
required += size + 2; required += size + 2;
if (mdecoder->codec_context->extradata_size < required) if ((mdecoder->codec_context->extradata_size < 0) ||
((size_t)mdecoder->codec_context->extradata_size < required))
return FALSE; return FALSE;
memcpy(p, s, size + 2); memcpy(p, s, size + 2);
} }
@ -227,7 +231,9 @@ static BOOL tsmf_ffmpeg_init_stream(ITSMFDecoder* decoder, const TS_AM_MEDIA_TYP
{ {
memcpy(mdecoder->codec_context->extradata, media_type->ExtraData, memcpy(mdecoder->codec_context->extradata, media_type->ExtraData,
media_type->ExtraDataSize); media_type->ExtraDataSize);
if (mdecoder->codec_context->extradata_size < media_type->ExtraDataSize + 8) if ((mdecoder->codec_context->extradata_size < 0) ||
((size_t)mdecoder->codec_context->extradata_size <
media_type->ExtraDataSize + 8ull))
return FALSE; return FALSE;
memset(mdecoder->codec_context->extradata + media_type->ExtraDataSize, 0, 8); memset(mdecoder->codec_context->extradata + media_type->ExtraDataSize, 0, 8);
} }

View File

@ -84,11 +84,9 @@ static const BYTE CLEAR_8BIT_MASKS[9] = { 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x
static void clear_reset_vbar_storage(CLEAR_CONTEXT* clear, BOOL zero) static void clear_reset_vbar_storage(CLEAR_CONTEXT* clear, BOOL zero)
{ {
int i;
if (zero) if (zero)
{ {
for (i = 0; i < ARRAYSIZE(clear->VBarStorage); i++) for (size_t i = 0; i < ARRAYSIZE(clear->VBarStorage); i++)
free(clear->VBarStorage[i].pixels); free(clear->VBarStorage[i].pixels);
ZeroMemory(clear->VBarStorage, sizeof(clear->VBarStorage)); ZeroMemory(clear->VBarStorage, sizeof(clear->VBarStorage));
@ -98,7 +96,7 @@ static void clear_reset_vbar_storage(CLEAR_CONTEXT* clear, BOOL zero)
if (zero) if (zero)
{ {
for (i = 0; i < ARRAYSIZE(clear->ShortVBarStorage); i++) for (size_t i = 0; i < ARRAYSIZE(clear->ShortVBarStorage); i++)
free(clear->ShortVBarStorage[i].pixels); free(clear->ShortVBarStorage[i].pixels);
ZeroMemory(clear->ShortVBarStorage, sizeof(clear->ShortVBarStorage)); ZeroMemory(clear->ShortVBarStorage, sizeof(clear->ShortVBarStorage));
@ -109,9 +107,7 @@ static void clear_reset_vbar_storage(CLEAR_CONTEXT* clear, BOOL zero)
static void clear_reset_glyph_cache(CLEAR_CONTEXT* clear) static void clear_reset_glyph_cache(CLEAR_CONTEXT* clear)
{ {
int i; for (size_t i = 0; i < ARRAYSIZE(clear->GlyphCache); i++)
for (i = 0; i < ARRAYSIZE(clear->GlyphCache); i++)
free(clear->GlyphCache[i].pixels); free(clear->GlyphCache[i].pixels);
ZeroMemory(clear->GlyphCache, sizeof(clear->GlyphCache)); ZeroMemory(clear->GlyphCache, sizeof(clear->GlyphCache));

View File

@ -1039,7 +1039,6 @@ static BOOL colordiff(UINT32 format, UINT32 a, UINT32 b)
static BOOL test_encode_decode(const char* path) static BOOL test_encode_decode(const char* path)
{ {
int x, y;
BOOL res = FALSE; BOOL res = FALSE;
int rc; int rc;
BYTE* resultData = NULL; BYTE* resultData = NULL;
@ -1087,11 +1086,11 @@ static BOOL test_encode_decode(const char* path)
dstImage->data = resultData; dstImage->data = resultData;
winpr_image_write(dstImage, "/tmp/test.bmp"); winpr_image_write(dstImage, "/tmp/test.bmp");
} }
for (y = 0; y < image->height; y++) for (UINT32 y = 0; y < image->height; y++)
{ {
const BYTE* orig = &image->data[y * image->scanline]; const BYTE* orig = &image->data[y * image->scanline];
const BYTE* dec = &resultData[y * image->scanline]; const BYTE* dec = &resultData[y * image->scanline];
for (x = 0; x < image->width; x++) for (UINT32 x = 0; x < image->width; x++)
{ {
const BYTE* po = &orig[x * 4]; const BYTE* po = &orig[x * 4];
const BYTE* pd = &dec[x * 4]; const BYTE* pd = &dec[x * 4];

View File

@ -235,10 +235,6 @@ BOOL rdp_send_client_control_pdu(rdpRdp* rdp, UINT16 action)
static BOOL rdp_write_client_persistent_key_list_pdu(wStream* s, RDP_BITMAP_PERSISTENT_INFO* info) static BOOL rdp_write_client_persistent_key_list_pdu(wStream* s, RDP_BITMAP_PERSISTENT_INFO* info)
{ {
int index;
UINT32 key1;
UINT32 key2;
WINPR_ASSERT(s); WINPR_ASSERT(s);
WINPR_ASSERT(info); WINPR_ASSERT(info);
@ -263,10 +259,10 @@ static BOOL rdp_write_client_persistent_key_list_pdu(wStream* s, RDP_BITMAP_PERS
if (!Stream_EnsureRemainingCapacity(s, info->keyCount * 8ull)) if (!Stream_EnsureRemainingCapacity(s, info->keyCount * 8ull))
return FALSE; return FALSE;
for (index = 0; index < info->keyCount; index++) for (UINT32 index = 0; index < info->keyCount; index++)
{ {
key1 = (UINT32)info->keyList[index]; const UINT32 key1 = (UINT32)info->keyList[index];
key2 = (UINT32)(info->keyList[index] >> 32); const UINT32 key2 = (UINT32)(info->keyList[index] >> 32);
Stream_Write_UINT32(s, key1); Stream_Write_UINT32(s, key1);
Stream_Write_UINT32(s, key2); Stream_Write_UINT32(s, key2);
} }

View File

@ -447,7 +447,7 @@ static BOOL license_check_stream_length(wStream* s, SSIZE_T expect, const char*
WLog_WARN(TAG, "invalid %s, expected value %" PRIdz " invalid", where, expect); WLog_WARN(TAG, "invalid %s, expected value %" PRIdz " invalid", where, expect);
return FALSE; return FALSE;
} }
if (remain < expect) if (remain < (size_t)expect)
{ {
WLog_WARN(TAG, "short %s, expected %" PRIdz " bytes, got %" PRIuz, where, expect, remain); WLog_WARN(TAG, "short %s, expected %" PRIdz " bytes, got %" PRIuz, where, expect, remain);
return FALSE; return FALSE;

View File

@ -53,15 +53,15 @@ static void delete_file(char* path)
if (fp) if (fp)
{ {
const char buffer[8192] = { 0 }; const char buffer[8192] = { 0 };
INT64 x, size = 0; INT64 size = 0;
int rs = _fseeki64(fp, 0, SEEK_END); int rs = _fseeki64(fp, 0, SEEK_END);
if (rs == 0) if (rs == 0)
size = _ftelli64(fp); size = _ftelli64(fp);
_fseeki64(fp, 0, SEEK_SET); _fseeki64(fp, 0, SEEK_SET);
for (x = 0; x < size; x += sizeof(buffer)) for (INT64 x = 0; x < size; x += sizeof(buffer))
{ {
fwrite(buffer, MIN(sizeof(buffer), size - x), 1, fp); fwrite(buffer, MIN(sizeof(buffer), (size_t)size - x), 1, fp);
} }
fclose(fp); fclose(fp);

View File

@ -685,9 +685,9 @@ static BOOL freerdp_get_system_language_and_country_codes(char* language, size_t
} }
#else #else
{ {
int dot; size_t dot;
DWORD nSize; DWORD nSize;
int underscore; size_t underscore;
char* env_lang = NULL; char* env_lang = NULL;
LPCSTR lang = "LANG"; LPCSTR lang = "LANG";
/* LANG = <language>_<country>.<encoding> */ /* LANG = <language>_<country>.<encoding> */
@ -718,7 +718,7 @@ static BOOL freerdp_get_system_language_and_country_codes(char* language, size_t
else else
{ {
/* Get language code */ /* Get language code */
size_t len = MIN(languageLen - 1, underscore); size_t len = MIN(languageLen - 1u, underscore);
strncpy(language, env_lang, len); strncpy(language, env_lang, len);
language[len] = '\0'; language[len] = '\0';
} }

View File

@ -1145,7 +1145,7 @@ UINT synthetic_file_read_close(struct synthetic_file* file, BOOL force)
* so avoid caching to prevent running out of available file descriptors */ * so avoid caching to prevent running out of available file descriptors */
UINT64 size = 0; UINT64 size = 0;
file_get_size(file, &size); file_get_size(file, &size);
if ((file->offset >= size) || force) if ((file->offset < 0) || ((UINT64)file->offset >= size) || force)
{ {
WLog_VRB(TAG, "close file %d", file->fd); WLog_VRB(TAG, "close file %d", file->fd);
if (CloseHandle(file->fd) < 0) if (CloseHandle(file->fd) < 0)

View File

@ -84,7 +84,7 @@ static BOOL compare_utf16_int(const WCHAR* what, size_t buffersize, SSIZE_T rc,
const size_t welen = _wcsnlen(test->utf16, test->utf16len); const size_t welen = _wcsnlen(test->utf16, test->utf16len);
if (buffersize > welen) if (buffersize > welen)
{ {
if (rc != welen) if ((rc < 0) || ((size_t)rc != welen))
{ {
fprintf(stderr, "%s length does not match expectation: %" PRIdz " != %" PRIuz "\n", fprintf(stderr, "%s length does not match expectation: %" PRIdz " != %" PRIuz "\n",
prefix, rc, welen); prefix, rc, welen);
@ -97,10 +97,10 @@ static BOOL compare_utf16_int(const WCHAR* what, size_t buffersize, SSIZE_T rc,
return FALSE; return FALSE;
} }
if ((rc > 0) && (buffersize > rc)) if ((rc > 0) && (buffersize > (size_t)rc))
{ {
const size_t wlen = _wcsnlen(what, buffersize); const size_t wlen = _wcsnlen(what, buffersize);
if (wlen > rc) if ((rc < 0) || (wlen > (size_t)rc))
{ {
fprintf(stderr, "%s length does not match wcslen: %" PRIdz " < %" PRIuz "\n", prefix, fprintf(stderr, "%s length does not match wcslen: %" PRIdz " < %" PRIuz "\n", prefix,
rc, wlen); rc, wlen);
@ -134,7 +134,7 @@ static BOOL compare_utf8_int(const char* what, size_t buffersize, SSIZE_T rc, SS
const size_t slen = strnlen(test->utf8, test->utf8len); const size_t slen = strnlen(test->utf8, test->utf8len);
if (buffersize > slen) if (buffersize > slen)
{ {
if (rc != slen) if ((rc < 0) || ((size_t)rc != slen))
{ {
fprintf(stderr, "%s length does not match expectation: %" PRIdz " != %" PRIuz "\n", fprintf(stderr, "%s length does not match expectation: %" PRIdz " != %" PRIuz "\n",
prefix, rc, slen); prefix, rc, slen);
@ -147,10 +147,10 @@ static BOOL compare_utf8_int(const char* what, size_t buffersize, SSIZE_T rc, SS
return FALSE; return FALSE;
} }
if ((rc > 0) && (buffersize > rc)) if ((rc > 0) && (buffersize > (size_t)rc))
{ {
const size_t wlen = strnlen(what, buffersize); const size_t wlen = strnlen(what, buffersize);
if (wlen != rc) if (wlen != (size_t)rc)
{ {
fprintf(stderr, "%s length does not match strnlen: %" PRIdz " != %" PRIuz "\n", prefix, fprintf(stderr, "%s length does not match strnlen: %" PRIdz " != %" PRIuz "\n", prefix,
rc, wlen); rc, wlen);
@ -177,7 +177,7 @@ static BOOL test_convert_to_utf16(const testcase_t* test)
const SSIZE_T rc2 = ConvertUtf8ToWChar(test->utf8, NULL, 0); const SSIZE_T rc2 = ConvertUtf8ToWChar(test->utf8, NULL, 0);
const size_t wlen = _wcsnlen(test->utf16, test->utf16len); const size_t wlen = _wcsnlen(test->utf16, test->utf16len);
if (rc2 != wlen) if ((rc2 < 0) || ((size_t)rc2 != wlen))
{ {
char prefix[8192] = { 0 }; char prefix[8192] = { 0 };
create_prefix(prefix, ARRAYSIZE(prefix), 0, rc2, -1, test, __FUNCTION__, __LINE__); create_prefix(prefix, ARRAYSIZE(prefix), 0, rc2, -1, test, __FUNCTION__, __LINE__);
@ -204,7 +204,7 @@ static BOOL test_convert_to_utf16_n(const testcase_t* test)
const SSIZE_T rc2 = ConvertUtf8NToWChar(test->utf8, test->utf8len, NULL, 0); const SSIZE_T rc2 = ConvertUtf8NToWChar(test->utf8, test->utf8len, NULL, 0);
const size_t wlen = _wcsnlen(test->utf16, test->utf16len); const size_t wlen = _wcsnlen(test->utf16, test->utf16len);
if (rc2 != wlen) if ((rc2 < 0) || ((size_t)rc2 != wlen))
{ {
char prefix[8192] = { 0 }; char prefix[8192] = { 0 };
create_prefix(prefix, ARRAYSIZE(prefix), 0, rc2, test->utf8len, test, __FUNCTION__, create_prefix(prefix, ARRAYSIZE(prefix), 0, rc2, test->utf8len, test, __FUNCTION__,
@ -241,7 +241,7 @@ static BOOL test_convert_to_utf8(const testcase_t* test)
const SSIZE_T rc2 = ConvertWCharToUtf8(test->utf16, NULL, 0); const SSIZE_T rc2 = ConvertWCharToUtf8(test->utf16, NULL, 0);
const size_t wlen = strnlen(test->utf8, test->utf8len); const size_t wlen = strnlen(test->utf8, test->utf8len);
if (rc2 != wlen) if ((rc2 < 0) || ((size_t)rc2 != wlen))
{ {
char prefix[8192] = { 0 }; char prefix[8192] = { 0 };
create_prefix(prefix, ARRAYSIZE(prefix), 0, rc2, -1, test, __FUNCTION__, __LINE__); create_prefix(prefix, ARRAYSIZE(prefix), 0, rc2, -1, test, __FUNCTION__, __LINE__);
@ -269,7 +269,7 @@ static BOOL test_convert_to_utf8_n(const testcase_t* test)
const SSIZE_T rc2 = ConvertWCharNToUtf8(test->utf16, test->utf16len, NULL, 0); const SSIZE_T rc2 = ConvertWCharNToUtf8(test->utf16, test->utf16len, NULL, 0);
const size_t wlen = strnlen(test->utf8, test->utf8len); const size_t wlen = strnlen(test->utf8, test->utf8len);
if (rc2 != wlen) if ((rc2 < 0) || ((size_t)rc2 != wlen))
{ {
char prefix[8192] = { 0 }; char prefix[8192] = { 0 };
create_prefix(prefix, ARRAYSIZE(prefix), 0, rc2, test->utf16len, test, __FUNCTION__, create_prefix(prefix, ARRAYSIZE(prefix), 0, rc2, test->utf16len, test, __FUNCTION__,

View File

@ -380,7 +380,7 @@ SSIZE_T ConvertWCharToUtf8(const WCHAR* wstr, char* str, size_t len)
WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, (int)MIN(INT32_MAX, len), NULL, NULL); WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, (int)MIN(INT32_MAX, len), NULL, NULL);
if (rc <= 0) if (rc <= 0)
return rc; return rc;
else if (rc == len) else if ((size_t)rc == len)
{ {
if (str && (str[rc - 1] != '\0')) if (str && (str[rc - 1] != '\0'))
return rc; return rc;
@ -407,15 +407,15 @@ SSIZE_T ConvertWCharNToUtf8(const WCHAR* wstr, size_t wlen, char* str, size_t le
} }
const int rc = WideCharToMultiByte(CP_UTF8, 0, wstr, (int)iwlen, str, (int)MIN(INT32_MAX, len), const int rc = WideCharToMultiByte(CP_UTF8, 0, wstr, (int)iwlen, str, (int)MIN(INT32_MAX, len),
NULL, NULL); NULL, NULL);
if ((rc <= 0) || ((len > 0) && (rc > len))) if ((rc <= 0) || ((len > 0) && ((size_t)rc > len)))
return -1; return -1;
else if (!isNullTerminated) else if (!isNullTerminated)
{ {
if (str && (rc < len)) if (str && ((size_t)rc < len))
str[rc] = '\0'; str[rc] = '\0';
return rc; return rc;
} }
else if (rc == len) else if ((size_t)rc == len)
{ {
if (str && (str[rc - 1] != '\0')) if (str && (str[rc - 1] != '\0'))
return rc; return rc;

View File

@ -623,7 +623,7 @@ static SECURITY_STATUS parseKeyName(LPCWSTR pszKeyName, CK_SLOT_ID* slotId, CK_B
if (!pos) if (!pos)
return NTE_BAD_KEY; return NTE_BAD_KEY;
if (pos - &asciiKeyName[1] > sizeof(CK_SLOT_ID) * 2) if (pos - &asciiKeyName[1] > sizeof(CK_SLOT_ID) * 2ull)
return NTE_BAD_KEY; return NTE_BAD_KEY;
*slotId = (CK_SLOT_ID)0; *slotId = (CK_SLOT_ID)0;

View File

@ -219,7 +219,7 @@ BOOL winpr_SetThreadpoolThreadMinimum(PTP_POOL ptpp, DWORD cthrdMic)
#endif #endif
ptpp->Minimum = cthrdMic; ptpp->Minimum = cthrdMic;
while (ArrayList_Count(ptpp->Threads) < (INT64)ptpp->Minimum) while (ArrayList_Count(ptpp->Threads) < ptpp->Minimum)
{ {
if (!(thread = CreateThread(NULL, 0, thread_pool_work_func, (void*)ptpp, 0, NULL))) if (!(thread = CreateThread(NULL, 0, thread_pool_work_func, (void*)ptpp, 0, NULL)))
{ {

View File

@ -1203,7 +1203,7 @@ static SECURITY_STATUS SEC_ENTRY ntlm_MakeSignature(PCtxtHandle phContext, ULONG
context = sspi_SecureHandleGetLowerPointer(phContext); context = sspi_SecureHandleGetLowerPointer(phContext);
for (int i = 0; i < pMessage->cBuffers; i++) for (ULONG i = 0; i < pMessage->cBuffers; i++)
{ {
if (pMessage->pBuffers[i].BufferType == SECBUFFER_DATA) if (pMessage->pBuffers[i].BufferType == SECBUFFER_DATA)
data_buffer = &pMessage->pBuffers[i]; data_buffer = &pMessage->pBuffers[i];
@ -1254,7 +1254,7 @@ static SECURITY_STATUS SEC_ENTRY ntlm_VerifySignature(PCtxtHandle phContext,
if (!context) if (!context)
return SEC_E_INVALID_HANDLE; return SEC_E_INVALID_HANDLE;
for (int i = 0; i < pMessage->cBuffers; i++) for (ULONG i = 0; i < pMessage->cBuffers; i++)
{ {
if (pMessage->pBuffers[i].BufferType == SECBUFFER_DATA) if (pMessage->pBuffers[i].BufferType == SECBUFFER_DATA)
data_buffer = &pMessage->pBuffers[i]; data_buffer = &pMessage->pBuffers[i];

View File

@ -319,7 +319,6 @@ fail:
static int ntlm_convert_password_hash(NTLM_CONTEXT* context, BYTE* hash) static int ntlm_convert_password_hash(NTLM_CONTEXT* context, BYTE* hash)
{ {
int i;
char PasswordHash[32] = { 0 }; char PasswordHash[32] = { 0 };
INT64 PasswordHashLength = 0; INT64 PasswordHashLength = 0;
SSPI_CREDENTIALS* credentials = NULL; SSPI_CREDENTIALS* credentials = NULL;
@ -333,14 +332,14 @@ static int ntlm_convert_password_hash(NTLM_CONTEXT* context, BYTE* hash)
PasswordHashLength = credentials->identity.PasswordLength - SSPI_CREDENTIALS_HASH_LENGTH_OFFSET; PasswordHashLength = credentials->identity.PasswordLength - SSPI_CREDENTIALS_HASH_LENGTH_OFFSET;
WINPR_ASSERT(PasswordHashLength >= 0); WINPR_ASSERT(PasswordHashLength >= 0);
WINPR_ASSERT(PasswordHashLength < ARRAYSIZE(PasswordHash)); WINPR_ASSERT((size_t)PasswordHashLength < ARRAYSIZE(PasswordHash));
if (ConvertWCharNToUtf8(credentials->identity.Password, PasswordHashLength, PasswordHash, if (ConvertWCharNToUtf8(credentials->identity.Password, PasswordHashLength, PasswordHash,
ARRAYSIZE(PasswordHash)) <= 0) ARRAYSIZE(PasswordHash)) <= 0)
return -1; return -1;
CharUpperBuffA(PasswordHash, (DWORD)PasswordHashLength); CharUpperBuffA(PasswordHash, (DWORD)PasswordHashLength);
for (i = 0; i < ARRAYSIZE(PasswordHash); i += 2) for (size_t i = 0; i < ARRAYSIZE(PasswordHash); i += 2)
{ {
BYTE hn = BYTE hn =
(BYTE)(PasswordHash[i] > '9' ? PasswordHash[i] - 'A' + 10 : PasswordHash[i] - '0'); (BYTE)(PasswordHash[i] > '9' ? PasswordHash[i] - 'A' + 10 : PasswordHash[i] - '0');