diff options
| author | Kevin Wasserman <kevin.wasserman@painless-security.com> | 2012-08-21 11:44:46 -0400 |
|---|---|---|
| committer | Ben Kaduk <kaduk@mit.edu> | 2012-08-29 16:34:45 -0400 |
| commit | a4418f619be053c7429e307f78d9694b2f798c65 (patch) | |
| tree | 8719cf515a60ca6df6d03784ed67ce856ad8d860 /src/ccapi/common | |
| parent | c326061409d6e48e68808e6f37b243e4f7356935 (diff) | |
| download | krb5-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.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/ccapi/common/win/tls.c b/src/ccapi/common/win/tls.c index 48a5bd5a45..5743ddb203 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; } |
