summaryrefslogtreecommitdiffstats
path: root/src/ccapi/common
diff options
context:
space:
mode:
authorKevin Wasserman <kevin.wasserman@painless-security.com>2012-08-21 11:44:46 -0400
committerBen Kaduk <kaduk@mit.edu>2012-08-29 16:34:45 -0400
commita4418f619be053c7429e307f78d9694b2f798c65 (patch)
tree8719cf515a60ca6df6d03784ed67ce856ad8d860 /src/ccapi/common
parentc326061409d6e48e68808e6f37b243e4f7356935 (diff)
downloadkrb5-a4418f619be053c7429e307f78d9694b2f798c65.tar.gz
krb5-a4418f619be053c7429e307f78d9694b2f798c65.tar.xz
krb5-a4418f619be053c7429e307f78d9694b2f798c65.zip
Fix KfW thread-local storage allocation issues
Allocate thread-local storage on demand; don't rely on the DLL_THREAD_ATTACH case in DllMain() since pre-existing threads will never execute that code. Signed-off-by: Kevin Wasserman <kevin.wasserman@painless-security.com> ticket: 7340 (new) target_version: 1.10.4 tags: pullup
Diffstat (limited to 'src/ccapi/common')
-rw-r--r--src/ccapi/common/win/tls.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/ccapi/common/win/tls.c b/src/ccapi/common/win/tls.c
index 48a5bd5a4..5743ddb20 100644
--- a/src/ccapi/common/win/tls.c
+++ b/src/ccapi/common/win/tls.c
@@ -100,7 +100,13 @@ BOOL WINAPI GetTspData(DWORD dwTlsIndex, struct tspdata** pdw) {
struct tspdata* pData; // The stored memory pointer
pData = (struct tspdata*)TlsGetValue(dwTlsIndex);
- if (pData == NULL) return FALSE;
+ if (pData == NULL) {
+ pData = malloc(sizeof(*pData));
+ if (pData == NULL)
+ return FALSE;
+ memset(pData, 0, sizeof(*pData));
+ TlsSetValue(dwTlsIndex, pData);
+ }
(*pdw) = pData;
return TRUE;
}