[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH] Fix VS2013 SDV failures
Also update the assert.h header. Signed-off-by: Paul Durrant <paul.durrant@xxxxxxxxxx> --- src/xeniface/assert.h | 67 ++++++++++++++++++++++++++++++++++++------------- src/xeniface/registry.c | 38 +++++++++++++++++----------- src/xeniface/wmi.c | 8 +++++- 3 files changed, 80 insertions(+), 33 deletions(-) diff --git a/src/xeniface/assert.h b/src/xeniface/assert.h index 4229f7c..83b215f 100644 --- a/src/xeniface/assert.h +++ b/src/xeniface/assert.h @@ -37,7 +37,7 @@ #include "log.h" static FORCEINLINE VOID -__BugCheck( +__Bug( IN ULONG Code, IN ULONG_PTR Parameter1, IN ULONG_PTR Parameter2, @@ -62,11 +62,11 @@ __BugCheck( ULONG _Line = __LINE__; \ \ Error("BUG: " _TEXT "\n"); \ - __BugCheck(ASSERTION_FAILURE, \ - (ULONG_PTR)_Text, \ - (ULONG_PTR)_File, \ - (ULONG_PTR)_Line, \ - 0); \ + __Bug(ASSERTION_FAILURE, \ + (ULONG_PTR)_Text, \ + (ULONG_PTR)_File, \ + (ULONG_PTR)_Line, \ + 0); \ } while (FALSE) #define BUG_ON(_EXP) \ @@ -98,7 +98,7 @@ __BugCheck( if (!(_Lval _OP _Rval)) { \ Error("%s = %llu\n", #_X, _Lval); \ Error("%s = %llu\n", #_Y, _Rval); \ - ASSERT(_X _OP _Y); \ + ASSERT((_X) _OP (_Y)); \ } \ } while (FALSE) @@ -109,7 +109,7 @@ __BugCheck( if (!(_Lval _OP _Rval)) { \ Error("%s = %lld\n", #_X, _Lval); \ Error("%s = %lld\n", #_Y, _Rval); \ - ASSERT(_X _OP _Y); \ + ASSERT((_X) _OP (_Y)); \ } \ } while (FALSE) @@ -120,16 +120,34 @@ __BugCheck( if (!(_Lval _OP _Rval)) { \ Error("%s = %p\n", #_X, _Lval); \ Error("%s = %p\n", #_Y, _Rval); \ - ASSERT(_X _OP _Y); \ + ASSERT((_X) _OP (_Y)); \ } \ } while (FALSE) #else // DBG -#define ASSERT(_EXP) -#define ASSERT3U(_X, _OP, _Y) -#define ASSERT3S(_X, _OP, _Y) -#define ASSERT3P(_X, _OP, _Y) +static FORCEINLINE VOID +_IgnoreAssertion( + IN BOOLEAN Value + ) +{ + UNREFERENCED_PARAMETER(Value); +} + +#define ASSERT(_EXP) \ + do { \ + _IgnoreAssertion(_EXP); \ + __analysis_assume(_EXP); \ + } while (FALSE) + +#define ASSERT3U(_X, _OP, _Y) \ + ASSERT((_X) _OP (_Y)) + +#define ASSERT3S(_X, _OP, _Y) \ + ASSERT((_X) _OP (_Y)) + +#define ASSERT3P(_X, _OP, _Y) \ + ASSERT((_X) _OP (_Y)) #endif // DBG @@ -161,17 +179,30 @@ _IsZeroMemory( return TRUE; } -#define IsZeroMemory(_Buffer, _Length) \ - _IsZeroMemory(__FUNCTION__, #_Buffer, (_Buffer), (_Length)) - #else // TEST_MEMORY -#define IsZeroMemory(_Buffer, _Length) TRUE +static __inline BOOLEAN +_IsZeroMemory( + IN const PCHAR Caller, + IN const PCHAR Name, + IN PVOID Buffer, + IN ULONG Length + ) +{ + UNREFERENCED_PARAMETER(Caller); + UNREFERENCED_PARAMETER(Name); + UNREFERENCED_PARAMETER(Buffer); + UNREFERENCED_PARAMETER(Length); + + return TRUE; +} #endif // TEST_MEMORY +#define IsZeroMemory(_Buffer, _Length) \ + _IsZeroMemory(__FUNCTION__, #_Buffer, (_Buffer), (_Length)) + #define IMPLY(_X, _Y) (!(_X) || (_Y)) #define EQUIV(_X, _Y) (IMPLY((_X), (_Y)) && IMPLY((_Y), (_X))) #endif // _XENIFACE_ASSERT_H - diff --git a/src/xeniface/registry.c b/src/xeniface/registry.c index 5843ef5..519d3f6 100644 --- a/src/xeniface/registry.c +++ b/src/xeniface/registry.c @@ -168,16 +168,16 @@ RegistryOpenHardwareKey( goto fail1; Length = 0; - (VOID) ZwQueryKey(SubKey, - KeyNameInformation, - NULL, - 0, - &Length); - - status = STATUS_INVALID_PARAMETER; - if (Length == 0) + status = ZwQueryKey(SubKey, + KeyNameInformation, + NULL, + 0, + &Length); + if (status != STATUS_BUFFER_OVERFLOW && + status != STATUS_BUFFER_TOO_SMALL) goto fail2; - + +#pragma prefast(suppress:6102) Info = __RegistryAllocate(Length + sizeof (WCHAR)); status = STATUS_NO_MEMORY; @@ -362,9 +362,11 @@ RegistryEnumerateSubKeys( NULL, 0, &Size); - if (status != STATUS_BUFFER_TOO_SMALL) + if (status != STATUS_BUFFER_OVERFLOW && + status != STATUS_BUFFER_TOO_SMALL) goto fail1; +#pragma prefast(suppress:6102) Full = __RegistryAllocate(Size); status = STATUS_NO_MEMORY; @@ -463,9 +465,11 @@ RegistryEnumerateValues( NULL, 0, &Size); - if (status != STATUS_BUFFER_TOO_SMALL) + if (status != STATUS_BUFFER_OVERFLOW && + status != STATUS_BUFFER_TOO_SMALL) goto fail1; +#pragma prefast(suppress:6102) Full = __RegistryAllocate(Size); status = STATUS_NO_MEMORY; @@ -596,9 +600,11 @@ RegistryQueryDwordValue( NULL, 0, &Size); - if (status != STATUS_BUFFER_TOO_SMALL) + if (status != STATUS_BUFFER_OVERFLOW && + status != STATUS_BUFFER_TOO_SMALL) goto fail2; +#pragma prefast(suppress:6102) Partial = __RegistryAllocate(Size); status = STATUS_NO_MEMORY; @@ -821,9 +827,11 @@ RegistryQuerySzValue( NULL, 0, &Size); - if (status != STATUS_BUFFER_TOO_SMALL) + if (status != STATUS_BUFFER_OVERFLOW && + status != STATUS_BUFFER_TOO_SMALL) goto fail2; +#pragma prefast(suppress:6102) Value = __RegistryAllocate(Size); status = STATUS_NO_MEMORY; @@ -892,10 +900,12 @@ RegistryQueryKeyName( NULL, 0, &Size); - if (status != STATUS_BUFFER_TOO_SMALL) + if (status != STATUS_BUFFER_OVERFLOW && + status != STATUS_BUFFER_TOO_SMALL) goto fail1; // Name information is not intrinsically NULL terminated +#pragma prefast(suppress:6102) Value = __RegistryAllocate(Size + sizeof (WCHAR)); status = STATUS_NO_MEMORY; diff --git a/src/xeniface/wmi.c b/src/xeniface/wmi.c index bbdb780..4285ada 100644 --- a/src/xeniface/wmi.c +++ b/src/xeniface/wmi.c @@ -1159,7 +1159,13 @@ CreateNewSession(XENIFACE_FDO *fdoData, fdoData->Sessions++; UnlockSessions(fdoData); InitializeObjectAttributes(&oa, NULL, OBJ_KERNEL_HANDLE, NULL, NULL); - (VOID) PsCreateSystemThread(&hthread, THREAD_ALL_ACCESS, &oa, NULL, NULL, WatchCallbackThread, session); + + status = PsCreateSystemThread(&hthread, THREAD_ALL_ACCESS, &oa, NULL, NULL, WatchCallbackThread, session); + if (!NT_SUCCESS(status)) { + RtlFreeAnsiString(&ansi); + ExFreePool(session); + return status; + } ObReferenceObjectByHandle(hthread, THREAD_ALL_ACCESS, NULL, KernelMode, &session->WatchThread, NULL); RtlFreeAnsiString(&ansi); return STATUS_SUCCESS; -- 2.1.1 _______________________________________________ win-pv-devel mailing list win-pv-devel@xxxxxxxxxxxxxxxxxxxx http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |