/* * VALIDATE.C * * RSM Service : Handle validation code * * Author: ErvinP * * (c) 2001 Microsoft Corporation * */ #include #include #include #include #include "internal.h" #include "resource.h" #include "debug.h" #pragma optimize("agpswy", off) BOOL ValidateSessionHandle(HANDLE hSession) { BOOL ok; /* * The server runs in its own context. * So just need to validate: * (1) its our context (we can write to it), and * (2) its a session context (not another one of our contexts) */ __try { SESSION *s = (SESSION *)hSession; ok = (s->sig == SESSION_SIG); } __except (EXCEPTION_EXECUTE_HANDLER){ DWORD exceptionCode = GetExceptionCode(); ok = FALSE; DBGERR(("invalid session handle (%xh) (code=%xh)", hSession, exceptionCode)); } return ok; } #pragma optimize("agpswy", on) // BUGBUG - how to set back to 'default' ? #pragma optimize("agpswy", off) BOOL ValidateWStr(LPCWSTR ws) { BOOL ok; __try { while (*ws++); ok = TRUE; } __except (EXCEPTION_EXECUTE_HANDLER){ DWORD exceptionCode = GetExceptionCode(); ok = FALSE; DBGERR(("invalid string arg (code=%xh)", exceptionCode)); } return ok; } #pragma optimize("agpswy", on) // BUGBUG - how to set back to 'default' ? #pragma optimize("agpswy", off) BOOL ValidateAStr(LPCSTR s) { BOOL ok; __try { while (*s++); ok = TRUE; } __except (EXCEPTION_EXECUTE_HANDLER){ DWORD exceptionCode = GetExceptionCode(); ok = FALSE; DBGERR(("invalid string arg (code=%xh)", exceptionCode)); } return ok; } #pragma optimize("agpswy", on) // BUGBUG - how to set back to 'default' ? #pragma optimize("agpswy", off) BOOL ValidateBuffer(PVOID buf, ULONG len) { PUCHAR bufPtr = (PUCHAR) buf; BOOL ok; __try { while (len > 0){ *bufPtr = *bufPtr; } ok = TRUE; } __except (EXCEPTION_EXECUTE_HANDLER){ DWORD exceptionCode = GetExceptionCode(); ok = FALSE; DBGERR(("invalid buffer (code=%xh)", exceptionCode)); } return ok; } #pragma optimize("agpswy", on) // BUGBUG - how to set back to 'default' ?