--- embedaddon/php/TSRM/tsrm_win32.c 2012/02/21 23:47:52 1.1 +++ embedaddon/php/TSRM/tsrm_win32.c 2013/07/22 01:32:14 1.1.1.3 @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2012 The PHP Group | + | Copyright (c) 1997-2013 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: tsrm_win32.c,v 1.1 2012/02/21 23:47:52 misho Exp $ */ +/* $Id: tsrm_win32.c,v 1.1.1.3 2013/07/22 01:32:14 misho Exp $ */ #include #include @@ -190,10 +190,10 @@ Finished: return NULL; } -TSRM_API int tsrm_win32_access(const char *pathname, int mode) +TSRM_API int tsrm_win32_access(const char *pathname, int mode TSRMLS_DC) { time_t t; - HANDLE thread_token; + HANDLE thread_token = NULL; PSID token_sid; SECURITY_INFORMATION sec_info = OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION; GENERIC_MAPPING gen_map = { FILE_GENERIC_READ, FILE_GENERIC_WRITE, FILE_GENERIC_EXECUTE, FILE_ALL_ACCESS }; @@ -208,8 +208,6 @@ TSRM_API int tsrm_win32_access(const char *pathname, i realpath_cache_bucket * bucket = NULL; char * real_path = NULL; - TSRMLS_FETCH(); - if (mode == 1 /*X_OK*/) { DWORD type; return GetBinaryType(pathname, &type) ? 0 : -1; @@ -365,6 +363,9 @@ Finished_Impersonate: } Finished: + if(thread_token != NULL) { + CloseHandle(thread_token); + } if(real_path != NULL) { free(real_path); real_path = NULL; @@ -448,10 +449,12 @@ static HANDLE dupHandle(HANDLE fh, BOOL inherit) { TSRM_API FILE *popen(const char *command, const char *type) { - return popen_ex(command, type, NULL, NULL); + TSRMLS_FETCH(); + + return popen_ex(command, type, NULL, NULL TSRMLS_CC); } -TSRM_API FILE *popen_ex(const char *command, const char *type, const char *cwd, char *env) +TSRM_API FILE *popen_ex(const char *command, const char *type, const char *cwd, char *env TSRMLS_DC) { FILE *stream = NULL; int fno, type_len = strlen(type), read, mode; @@ -468,8 +471,6 @@ TSRM_API FILE *popen_ex(const char *command, const cha HANDLE thread_token = NULL; HANDLE token_user = NULL; BOOL asuser = TRUE; - - TSRMLS_FETCH(); if (!type) { return NULL;