You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
168 lines
4.3 KiB
168 lines
4.3 KiB
//+---------------------------------------------------------------------------
|
|
//
|
|
// 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
|
|
|
|
|