mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
get rid of two strlen calls
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ TSRMLS_CACHE_EXTERN()
|
||||
#define SHM_RND FILE_MAP_WRITE
|
||||
#define SHM_REMAP FILE_MAP_COPY
|
||||
|
||||
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);
|
||||
|
||||
TSRM_API void tsrm_win32_startup(void);
|
||||
TSRM_API void tsrm_win32_shutdown(void);
|
||||
|
||||
@@ -525,7 +525,8 @@ CWD_API char *virtual_getcwd(char *buf, size_t size) /* {{{ */
|
||||
static inline zend_ulong realpath_cache_key(const char *path, size_t path_len) /* {{{ */
|
||||
{
|
||||
register zend_ulong h;
|
||||
char *bucket_key_start = tsrm_win32_get_path_sid_key(path);
|
||||
size_t bucket_key_len;
|
||||
char *bucket_key_start = tsrm_win32_get_path_sid_key(path, path_len, &bucket_key_len);
|
||||
char *bucket_key = (char *)bucket_key_start;
|
||||
const char *e;
|
||||
|
||||
@@ -533,7 +534,7 @@ static inline zend_ulong realpath_cache_key(const char *path, size_t path_len) /
|
||||
return 0;
|
||||
}
|
||||
|
||||
e = bucket_key + strlen(bucket_key);
|
||||
e = bucket_key + bucket_key_len;
|
||||
for (h = Z_UL(2166136261); bucket_key < e;) {
|
||||
h *= Z_UL(16777619);
|
||||
h ^= *bucket_key++;
|
||||
|
||||
Reference in New Issue
Block a user