[winpr] fix InitializeCriticalSectionAndSpinCount

Check return values when used.
This commit is contained in:
Armin Novak
2026-02-27 12:39:55 +01:00
parent 593d36592d
commit 486caf5516
9 changed files with 40 additions and 11 deletions

View File

@@ -495,7 +495,12 @@ static int bio_rdp_tls_new(BIO* bio)
if (!(tls = calloc(1, sizeof(BIO_RDP_TLS))))
return 0;
InitializeCriticalSectionAndSpinCount(&tls->lock, 4000);
if (!InitializeCriticalSectionAndSpinCount(&tls->lock, 4000))
{
free(tls);
return -1;
}
BIO_set_data(bio, (void*)tls);
return 1;
}

View File

@@ -152,9 +152,15 @@ static DWORD WINAPI TestSynchCritical_Main(LPVOID arg)
DeleteCriticalSection(&critical);
if (dwSpinCount % 2 == 0)
InitializeCriticalSectionAndSpinCount(&critical, dwSpinCount);
{
if (!InitializeCriticalSectionAndSpinCount(&critical, dwSpinCount))
goto fail;
}
else
InitializeCriticalSectionEx(&critical, dwSpinCount, 0);
{
if (!InitializeCriticalSectionEx(&critical, dwSpinCount, 0))
goto fail;
}
}
DeleteCriticalSection(&critical);
@@ -229,7 +235,8 @@ static DWORD WINAPI TestSynchCritical_Main(LPVOID arg)
for (int j = 0; j < TEST_SYNC_CRITICAL_TEST1_RUNS; j++)
{
dwSpinCount = j * 100;
InitializeCriticalSectionAndSpinCount(&critical, dwSpinCount);
if (!InitializeCriticalSectionAndSpinCount(&critical, dwSpinCount))
goto fail;
gTestValueVulnerable = 0;
gTestValueSerialized = 0;

View File

@@ -591,7 +591,8 @@ wArrayList* ArrayList_New(BOOL synchronized)
if (!ArrayList_EnsureCapacity(arrayList, 32))
goto fail;
InitializeCriticalSectionAndSpinCount(&arrayList->lock, 4000);
if (!InitializeCriticalSectionAndSpinCount(&arrayList->lock, 4000))
goto fail;
return arrayList;
fail:
WINPR_PRAGMA_DIAG_PUSH

View File

@@ -523,7 +523,10 @@ wBufferPool* BufferPool_New(BOOL synchronized, SSIZE_T fixedSize, DWORD alignmen
pool->synchronized = synchronized;
if (pool->synchronized)
InitializeCriticalSectionAndSpinCount(&pool->lock, 4000);
{
if (!InitializeCriticalSectionAndSpinCount(&pool->lock, 4000))
goto out_error;
}
if (pool->fixedSize)
{

View File

@@ -765,7 +765,8 @@ wHashTable* HashTable_New(BOOL synchronized)
goto fail;
table->synchronized = synchronized;
InitializeCriticalSectionAndSpinCount(&(table->lock), 4000);
if (!InitializeCriticalSectionAndSpinCount(&(table->lock), 4000))
goto fail;
table->numOfBuckets = 64;
table->numOfElements = 0;
table->bucketArray = (wKeyValuePair**)calloc(table->numOfBuckets, sizeof(wKeyValuePair*));

View File

@@ -168,7 +168,13 @@ wObjectPool* ObjectPool_New(BOOL synchronized)
pool->synchronized = synchronized;
if (pool->synchronized)
InitializeCriticalSectionAndSpinCount(&pool->lock, 4000);
{
if (!InitializeCriticalSectionAndSpinCount(&pool->lock, 4000))
{
free(pool);
return nullptr;
}
}
}
return pool;

View File

@@ -414,7 +414,8 @@ wStreamPool* StreamPool_New(BOOL synchronized, size_t defaultSize)
if (!StreamPool_EnsureCapacity(pool, 32, TRUE))
goto fail;
InitializeCriticalSectionAndSpinCount(&pool->lock, 4000);
if (!InitializeCriticalSectionAndSpinCount(&pool->lock, 4000))
goto fail;
}
return pool;

View File

@@ -144,7 +144,11 @@ static wLogAppender* WLog_Appender_New(wLog* log, DWORD logAppenderType)
return nullptr;
}
InitializeCriticalSectionAndSpinCount(&appender->lock, 4000);
if (!InitializeCriticalSectionAndSpinCount(&appender->lock, 4000))
{
WLog_Appender_Free(log, appender);
return nullptr;
}
return appender;
}

View File

@@ -921,7 +921,8 @@ wLog* WLog_New(LPCSTR name, wLog* rootLogger)
goto out_fail;
}
InitializeCriticalSectionAndSpinCount(&log->lock, 4000);
if (!InitializeCriticalSectionAndSpinCount(&log->lock, 4000))
goto out_fail;
return log;
out_fail: