@@ -31,10 +31,9 @@ PHP_METHOD(com, __construct)
31
31
zval * object = getThis ();
32
32
zval * server_params = NULL ;
33
33
php_com_dotnet_object * obj ;
34
- char * module_name , * typelib_name = NULL , * server_name = NULL ;
35
- char * user_name = NULL , * domain_name = NULL , * password = NULL ;
36
- size_t module_name_len = 0 , typelib_name_len = 0 , server_name_len = 0 ,
37
- user_name_len , domain_name_len , password_len ;
34
+ char * module_name , * typelib_name = NULL ;
35
+ size_t module_name_len = 0 , typelib_name_len = 0 ;
36
+ zend_string * server_name = NULL , * user_name = NULL , * password = NULL , * domain_name = NULL ;
38
37
OLECHAR * moniker ;
39
38
CLSID clsid ;
40
39
CLSCTX ctx = CLSCTX_SERVER ;
@@ -52,11 +51,11 @@ PHP_METHOD(com, __construct)
52
51
const struct php_win32_cp * cp_it ;
53
52
54
53
if (FAILURE == zend_parse_parameters_ex (ZEND_PARSE_PARAMS_QUIET ,
55
- ZEND_NUM_ARGS (), "s|s !ls" ,
56
- & module_name , & module_name_len , & server_name , & server_name_len ,
54
+ ZEND_NUM_ARGS (), "s|S !ls" ,
55
+ & module_name , & module_name_len , & server_name ,
57
56
& cp , & typelib_name , & typelib_name_len ) &&
58
57
FAILURE == zend_parse_parameters (
59
- ZEND_NUM_ARGS (), "sa/ |ls" ,
58
+ ZEND_NUM_ARGS (), "sa|ls" ,
60
59
& module_name , & module_name_len , & server_params , & cp ,
61
60
& typelib_name , & typelib_name_len )) {
62
61
RETURN_THROWS ();
@@ -81,31 +80,23 @@ PHP_METHOD(com, __construct)
81
80
82
81
if (NULL != (tmp = zend_hash_str_find (Z_ARRVAL_P (server_params ),
83
82
"Server" , sizeof ("Server" )- 1 ))) {
84
- convert_to_string_ex (tmp );
85
- server_name = Z_STRVAL_P (tmp );
86
- server_name_len = Z_STRLEN_P (tmp );
83
+ server_name = zval_get_string (tmp );
87
84
ctx = CLSCTX_REMOTE_SERVER ;
88
85
}
89
86
90
87
if (NULL != (tmp = zend_hash_str_find (Z_ARRVAL_P (server_params ),
91
88
"Username" , sizeof ("Username" )- 1 ))) {
92
- convert_to_string_ex (tmp );
93
- user_name = Z_STRVAL_P (tmp );
94
- user_name_len = Z_STRLEN_P (tmp );
89
+ user_name = zval_get_string (tmp );
95
90
}
96
91
97
92
if (NULL != (tmp = zend_hash_str_find (Z_ARRVAL_P (server_params ),
98
93
"Password" , sizeof ("Password" )- 1 ))) {
99
- convert_to_string_ex (tmp );
100
- password = Z_STRVAL_P (tmp );
101
- password_len = Z_STRLEN_P (tmp );
94
+ password = zval_get_string (tmp );
102
95
}
103
96
104
97
if (NULL != (tmp = zend_hash_str_find (Z_ARRVAL_P (server_params ),
105
98
"Domain" , sizeof ("Domain" )- 1 ))) {
106
- convert_to_string_ex (tmp );
107
- domain_name = Z_STRVAL_P (tmp );
108
- domain_name_len = Z_STRLEN_P (tmp );
99
+ domain_name = zval_get_string (tmp );
109
100
}
110
101
111
102
if (NULL != (tmp = zend_hash_str_find (Z_ARRVAL_P (server_params ),
@@ -126,25 +117,25 @@ PHP_METHOD(com, __construct)
126
117
if (server_name ) {
127
118
info .dwReserved1 = 0 ;
128
119
info .dwReserved2 = 0 ;
129
- info .pwszName = php_com_string_to_olestring (server_name , server_name_len , obj -> code_page );
120
+ info .pwszName = php_com_string_to_olestring (ZSTR_VAL ( server_name ), ZSTR_LEN ( server_name ) , obj -> code_page );
130
121
131
122
if (user_name ) {
132
- authid .User = (OLECHAR * )user_name ;
133
- authid .UserLength = (ULONG )user_name_len ;
123
+ authid .User = (OLECHAR * ) ZSTR_VAL ( user_name ) ;
124
+ authid .UserLength = (ULONG ) ZSTR_LEN ( user_name ) ;
134
125
135
126
if (password ) {
136
- authid .Password = (OLECHAR * )password ;
137
- authid .PasswordLength = (ULONG )password_len ;
127
+ authid .Password = (OLECHAR * ) ZSTR_VAL ( password ) ;
128
+ authid .PasswordLength = (ULONG ) ZSTR_LEN ( password ) ;
138
129
} else {
139
- authid .Password = (OLECHAR * )"" ;
130
+ authid .Password = (OLECHAR * ) "" ;
140
131
authid .PasswordLength = 0 ;
141
132
}
142
133
143
134
if (domain_name ) {
144
- authid .Domain = (OLECHAR * )domain_name ;
145
- authid .DomainLength = (ULONG )domain_name_len ;
135
+ authid .Domain = (OLECHAR * ) ZSTR_VAL ( domain_name ) ;
136
+ authid .DomainLength = (ULONG ) ZSTR_LEN ( domain_name ) ;
146
137
} else {
147
- authid .Domain = (OLECHAR * )"" ;
138
+ authid .Domain = (OLECHAR * ) "" ;
148
139
authid .DomainLength = 0 ;
149
140
}
150
141
authid .Flags = SEC_WINNT_AUTH_IDENTITY_ANSI ;
@@ -217,7 +208,11 @@ PHP_METHOD(com, __construct)
217
208
218
209
if (server_name ) {
219
210
if (info .pwszName ) efree (info .pwszName );
211
+ if (server_params ) zend_string_release (server_name );
220
212
}
213
+ if (user_name ) zend_string_release (user_name );
214
+ if (password ) zend_string_release (password );
215
+ if (domain_name ) zend_string_release (domain_name );
221
216
222
217
efree (moniker );
223
218
0 commit comments