summaryrefslogtreecommitdiff
path: root/TSRM/tsrm_win32.c
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2017-04-27 15:39:32 +0200
committerAnatol Belski <ab@php.net>2017-04-27 15:41:09 +0200
commit24ae881080f8cfbb56e0981973d4474a831a3398 (patch)
tree556db6a42b6dd30df3c5b111b149b5de2282fc15 /TSRM/tsrm_win32.c
parent84b397bf44d656cdedbf9a10aae33f4b51736ccf (diff)
downloadphp-git-24ae881080f8cfbb56e0981973d4474a831a3398.tar.gz
get rid of two strlen calls
Diffstat (limited to 'TSRM/tsrm_win32.c')
-rw-r--r--TSRM/tsrm_win32.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/TSRM/tsrm_win32.c b/TSRM/tsrm_win32.c
index 84d153956e..4bd1fcb930 100644
--- a/TSRM/tsrm_win32.c
+++ b/TSRM/tsrm_win32.c
@@ -107,33 +107,36 @@ TSRM_API void tsrm_win32_shutdown(void)
#endif
}
-char * tsrm_win32_get_path_sid_key(const char *pathname)
+char * tsrm_win32_get_path_sid_key(const char *pathname, size_t pathname_len, size_t *key_len)
{
PSID pSid = TWG(impersonation_token_sid);
TCHAR *ptcSid = NULL;
char *bucket_key = NULL;
- size_t ptc_sid_len, pathname_len;
-
- pathname_len = strlen(pathname);
+ size_t ptc_sid_len;
if (!pSid) {
bucket_key = (char *)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, pathname_len + 1);
if (!bucket_key) {
+ *key_len = 0;
return NULL;
}
memcpy(bucket_key, pathname, pathname_len);
+ *key_len = pathname_len;
return bucket_key;
}
if (!ConvertSidToStringSid(pSid, &ptcSid)) {
+ *key_len = 0;
return NULL;
}
ptc_sid_len = strlen(ptcSid);
- bucket_key = (char *)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, pathname_len + ptc_sid_len + 1);
+ *key_len = pathname_len + ptc_sid_len;
+ bucket_key = (char *)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, *key_len + 1);
if (!bucket_key) {
LocalFree(ptcSid);
+ *key_len = 0;
return NULL;
}