//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992 - 1995. // // File: debug.c // // Contents: // // Classes: // // Functions: // // History: 10-02-96 RichardW Created // //---------------------------------------------------------------------------- #include "sslp.h" #if DBG // NOTE: This file not compiled for retail builds DEBUG_KEY SslDebugKeys[] = { {DEB_ERROR, "Error"}, {DEB_WARN, "Warning"}, {DEB_TRACE, "Trace"}, {DEB_TRACE_FUNC, "Func"}, {DEB_TRACE_CRED, "Cred"}, {DEB_TRACE_CTXT, "Ctxt"}, {DEB_TRACE_MAPPER, "Mapper"}, {0, NULL} }; DEFINE_DEBUG2( Ssl ); void InitDebugSupport( HKEY hGlobalKey) { static BOOL fFirstTime = TRUE; CHAR szFileName[MAX_PATH]; CHAR szDirectoryName[MAX_PATH]; DWORD dwSize; DWORD dwType; DWORD err; DWORD fVal; HKEY hkBase; DWORD disp; SslInitDebug(SslDebugKeys); // SslInfoLevel |= DEB_TRACE_MAPPER ; if(hGlobalKey) { // We're running in the lsass.exe process. hkBase = hGlobalKey; } else { err = RegCreateKeyEx(HKEY_LOCAL_MACHINE, SP_REG_KEY_BASE, 0, TEXT(""), REG_OPTION_NON_VOLATILE, KEY_READ, NULL, &hkBase, &disp); if(err) { DebugLog((DEB_WARN,"Failed to open SCHANNEL key: 0x%x\n", err)); return; } } dwSize = sizeof(DWORD); err = RegQueryValueEx(hkBase, SP_REG_VAL_LOGLEVEL, NULL, &dwType, (PUCHAR)&fVal, &dwSize); if(!err) { g_dwInfoLevel = fVal; } dwSize = sizeof(DWORD); err = RegQueryValueEx(hkBase, SP_REG_VAL_BREAK, NULL, &dwType, (PUCHAR)&fVal, &dwSize); if(!err) { g_dwDebugBreak = fVal; } if(g_hfLogFile) { CloseHandle(g_hfLogFile); g_hfLogFile = NULL; } dwSize = 255; err = RegQueryValueExA(hkBase, SP_REG_VAL_LOGFILE, NULL, &dwType, (PUCHAR)szDirectoryName, &dwSize); if(!err) { if(hGlobalKey) { strcpy(szFileName, szDirectoryName); strcat(szFileName, "\\Schannel.log"); } else { sprintf(szFileName,"%s\\Schannel_%d.log",szDirectoryName,GetCurrentProcessId()); } g_hfLogFile = CreateFileA(szFileName, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if(g_hfLogFile) { SetFilePointer(g_hfLogFile, 0, 0, FILE_END); } if(fFirstTime == TRUE) { SYSTEMTIME stTime; GetLocalTime(&stTime); DebugLog((SP_LOG_ERROR, "==== SCHANNEL LOG INITIATED %d/%d/%d %02d:%02d:%02d ====\n", stTime.wMonth, stTime.wDay, stTime.wYear, stTime.wHour, stTime.wMinute, stTime.wSecond)); dwSize = sizeof(szFileName); if(GetModuleFileNameA(NULL, szFileName, dwSize) != 0) { DebugLog((SP_LOG_ERROR, "Module name:%s\n", szFileName)); } } fFirstTime = FALSE; } if(hGlobalKey == NULL) { RegCloseKey(hkBase); } } VOID UnloadDebugSupport( VOID ) { SslUnloadDebug(); } #else // DBG #pragma warning(disable:4206) // Disable the empty translation unit // warning/error #endif // NOTE: This file not compiled for retail builds