summaryrefslogtreecommitdiff
path: root/pthread_win32_attach_detach_np.c
diff options
context:
space:
mode:
authorrpj <rpj>2011-07-05 02:02:35 +0000
committerrpj <rpj>2011-07-05 02:02:35 +0000
commitb83397a7653646e1c23512ba8be9f4ee07e2c0f4 (patch)
tree73c0c69700f46fbb3e61d2e87c5a310c4b2d12af /pthread_win32_attach_detach_np.c
parent07078828641a069218e8f564b75ba8a8676b9f91 (diff)
Remove compile warning; fix bug
Diffstat (limited to 'pthread_win32_attach_detach_np.c')
-rw-r--r--pthread_win32_attach_detach_np.c23
1 files changed, 18 insertions, 5 deletions
diff --git a/pthread_win32_attach_detach_np.c b/pthread_win32_attach_detach_np.c
index d26a632..bfad450 100644
--- a/pthread_win32_attach_detach_np.c
+++ b/pthread_win32_attach_detach_np.c
@@ -45,7 +45,7 @@ static HINSTANCE ptw32_h_quserex;
BOOL
pthread_win32_process_attach_np ()
{
- TCHAR WindowsSystemDirBuf[1024];
+ TCHAR QuserExDLLPathBuf[1024];
BOOL result = TRUE;
result = ptw32_processInitialize ();
@@ -57,6 +57,9 @@ pthread_win32_process_attach_np ()
#if defined(__GNUC__)
ptw32_features = 0;
#else
+ /*
+ * This is obsolete now.
+ */
ptw32_features = PTW32_SYSTEM_INTERLOCKED_COMPARE_EXCHANGE;
#endif
@@ -67,12 +70,22 @@ pthread_win32_process_attach_np ()
*
* This should take care of any security issues.
*/
- if(GetSystemDirectory(WindowsSystemDirBuf, sizeof(WindowsSystemDirBuf)))
+#if defined(__GNUC__) || _MSC_VER < 1400
+ if(GetSystemDirectory(QuserExDLLPathBuf, sizeof(QuserExDLLPathBuf)))
+ {
+ (void) strncat(QuserExDLLPathBuf,
+ "\\QUSEREX.DLL",
+ sizeof(QuserExDLLPathBuf) - strlen(QuserExDLLPathBuf) - 1);
+ ptw32_h_quserex = LoadLibrary(QuserExDLLPathBuf);
+ }
+#else
+ /* strncat is secure - this is just to avoid a warning */
+ if(GetSystemDirectory(QuserExDLLPathBuf, sizeof(QuserExDLLPathBuf)) &&
+ 0 == strncat_s(QuserExDLLPathBuf, sizeof(QuserExDLLPathBuf), "\\QUSEREX.DLL", 12))
{
- ptw32_h_quserex = LoadLibrary (TEXT (strncat(WindowsSystemDirBuf,
- "\\QUSEREX.DLL",
- sizeof(WindowsSystemDirBuf))));
+ ptw32_h_quserex = LoadLibrary(QuserExDLLPathBuf);
}
+#endif
if (ptw32_h_quserex != NULL)
{