summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeffrey Altman <jaltman@secure-endpoints.com>2007-03-21 04:48:09 +0000
committerJeffrey Altman <jaltman@secure-endpoints.com>2007-03-21 04:48:09 +0000
commitb8b1bc0eb4b567f4a35366e198fda13717ed6a24 (patch)
tree730ef00e3ad5648913eb36817a19d92369741b82
parent6ef9fbf8e57171024a9385d59bcf63d9107ccb8b (diff)
downloadkrb5-b8b1bc0eb4b567f4a35366e198fda13717ed6a24.tar.gz
krb5-b8b1bc0eb4b567f4a35366e198fda13717ed6a24.tar.xz
krb5-b8b1bc0eb4b567f4a35366e198fda13717ed6a24.zip
When using the Vista SDK version of NTSecAPI.h it is necessary
to ensure the _WIN32_WINNT have a value of 0x0501 or greater. Otherwise, required LSA type declarations are undeclared. Provide a registry value that can be set to turn on Application Event log messages for debugging. HKLM\System\CurrentControlSet\Services\MIT Kerberos\Network Provider DWORD "Debug" Ensure that KFW_obtain_user_temp_directory() returns a value on error. Correct the declaration of KFW_copy_cache_to_system_file() to match the prototype. ticket: 5469 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@19240 dc483132-0cff-0310-8789-dd5450dbe970
-rw-r--r--src/windows/kfwlogon/kfwcommon.c58
-rw-r--r--src/windows/kfwlogon/kfwlogon.h10
2 files changed, 48 insertions, 20 deletions
diff --git a/src/windows/kfwlogon/kfwcommon.c b/src/windows/kfwlogon/kfwcommon.c
index a3b02eeaba..b578d943b0 100644
--- a/src/windows/kfwlogon/kfwcommon.c
+++ b/src/windows/kfwlogon/kfwcommon.c
@@ -24,7 +24,7 @@ SOFTWARE.
*/
#include "kfwlogon.h"
-#include <winbase.h>
+#include <windows.h>
#include <Aclapi.h>
#include <userenv.h>
#include <Sddl.h>
@@ -291,34 +291,54 @@ static HINSTANCE hCCAPI = 0;
static DWORD TraceOption = 0;
static HANDLE hDLL;
+BOOL IsDebugLogging(void)
+{
+ DWORD LSPtype, LSPsize;
+ HKEY NPKey;
+ DWORD dwDebug = FALSE;
+
+ if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+ "System\\CurrentControlSet\\Services\\MIT Kerberos\\Network Provider",
+ 0, KEY_QUERY_VALUE, &NPKey) == ERROR_SUCCESS) {
+ LSPsize=sizeof(dwDebug);
+ if (RegQueryValueEx(NPKey, "Debug", NULL, &LSPtype, (LPBYTE)&dwDebug, &LSPsize) != ERROR_SUCCESS
+ || LSPtype != REG_DWORD)
+ dwDebug = FALSE;
+
+ RegCloseKey (NPKey);
+ }
+
+ return(dwDebug ? TRUE : FALSE);
+}
+
void DebugEvent0(char *a)
{
-#ifdef DEBUG
HANDLE h; char *ptbuf[1];
- h = RegisterEventSource(NULL, KFW_LOGON_EVENT_NAME);
- ptbuf[0] = a;
- ReportEvent(h, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, (const char **)ptbuf, NULL);
- DeregisterEventSource(h);
-#endif
+ if (IsDebugLogging()) {
+ h = RegisterEventSource(NULL, KFW_LOGON_EVENT_NAME);
+ ptbuf[0] = a;
+ ReportEvent(h, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, (const char **)ptbuf, NULL);
+ DeregisterEventSource(h);
+ }
}
#define MAXBUF_ 512
void DebugEvent(char *b,...)
{
-#ifdef DEBUG
HANDLE h; char *ptbuf[1],buf[MAXBUF_+1];
va_list marker;
- h = RegisterEventSource(NULL, KFW_LOGON_EVENT_NAME);
- va_start(marker,b);
- StringCbVPrintf(buf, MAXBUF_+1,b,marker);
- buf[MAXBUF_] = '\0';
- ptbuf[0] = buf;
- ReportEvent(h, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, (const char **)ptbuf, NULL);
- DeregisterEventSource(h);
- va_end(marker);
-#endif
+ if (IsDebugLogging()) {
+ h = RegisterEventSource(NULL, KFW_LOGON_EVENT_NAME);
+ va_start(marker,b);
+ StringCbVPrintf(buf, MAXBUF_+1,b,marker);
+ buf[MAXBUF_] = '\0';
+ ptbuf[0] = buf;
+ ReportEvent(h, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, (const char **)ptbuf, NULL);
+ DeregisterEventSource(h);
+ va_end(marker);
+ }
}
void
@@ -978,7 +998,7 @@ int KFW_obtain_user_temp_directory(HANDLE hUserToken, char *newfilename, int siz
DWORD dwLen = 0;
if (!hUserToken || !newfilename || size <= 0)
- return;
+ return 1;
*newfilename = '\0';
@@ -993,7 +1013,7 @@ int KFW_obtain_user_temp_directory(HANDLE hUserToken, char *newfilename, int siz
}
void
-KFW_copy_cache_to_system_file(char * user, char * filename)
+KFW_copy_cache_to_system_file(const char * user, const char * filename)
{
DWORD count;
char cachename[MAX_PATH + 8] = "FILE:";
diff --git a/src/windows/kfwlogon/kfwlogon.h b/src/windows/kfwlogon/kfwlogon.h
index a542b81c3d..d9bf13d065 100644
--- a/src/windows/kfwlogon/kfwlogon.h
+++ b/src/windows/kfwlogon/kfwlogon.h
@@ -27,8 +27,16 @@ SOFTWARE.
/* We only support VC 1200 and above anyway */
#pragma once
+/* _WIN32_WINNT must be 0x0501 or greater to pull in definition of
+ * all required LSA data types when the Vista SDK NtSecAPI.h is used.
+ */
#ifndef _WIN32_WINNT
-#define _WIN32_WINNT 0x0500
+#define _WIN32_WINNT 0x0501
+#else
+#if _WIN32_WINNT < 0x0501
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0501
+#endif
#endif
#include <windows.h>