@@ -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,39 +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
- if (!try_convert_to_string (tmp )) {
85
- RETURN_THROWS ();
86
- }
87
- server_name = Z_STRVAL_P (tmp );
88
- server_name_len = Z_STRLEN_P (tmp );
83
+ server_name = zval_get_string (tmp );
89
84
ctx = CLSCTX_REMOTE_SERVER ;
90
85
}
91
86
92
87
if (NULL != (tmp = zend_hash_str_find (Z_ARRVAL_P (server_params ),
93
88
"Username" , sizeof ("Username" )- 1 ))) {
94
- if (!try_convert_to_string (tmp )) {
95
- RETURN_THROWS ();
96
- }
97
- user_name = Z_STRVAL_P (tmp );
98
- user_name_len = Z_STRLEN_P (tmp );
89
+ user_name = zval_get_string (tmp );
99
90
}
100
91
101
92
if (NULL != (tmp = zend_hash_str_find (Z_ARRVAL_P (server_params ),
102
93
"Password" , sizeof ("Password" )- 1 ))) {
103
- if (!try_convert_to_string (tmp )) {
104
- RETURN_THROWS ();
105
- }
106
- password = Z_STRVAL_P (tmp );
107
- password_len = Z_STRLEN_P (tmp );
94
+ password = zval_get_string (tmp );
108
95
}
109
96
110
97
if (NULL != (tmp = zend_hash_str_find (Z_ARRVAL_P (server_params ),
111
98
"Domain" , sizeof ("Domain" )- 1 ))) {
112
- if (!try_convert_to_string (tmp )) {
113
- RETURN_THROWS ();
114
- }
115
- domain_name = Z_STRVAL_P (tmp );
116
- domain_name_len = Z_STRLEN_P (tmp );
99
+ domain_name = zval_get_string (tmp );
117
100
}
118
101
119
102
if (NULL != (tmp = zend_hash_str_find (Z_ARRVAL_P (server_params ),
@@ -134,25 +117,25 @@ PHP_METHOD(com, __construct)
134
117
if (server_name ) {
135
118
info .dwReserved1 = 0 ;
136
119
info .dwReserved2 = 0 ;
137
- 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 );
138
121
139
122
if (user_name ) {
140
- authid .User = (OLECHAR * )user_name ;
141
- authid .UserLength = (ULONG )user_name_len ;
123
+ authid .User = (OLECHAR * ) ZSTR_VAL ( user_name ) ;
124
+ authid .UserLength = (ULONG ) ZSTR_LEN ( user_name ) ;
142
125
143
126
if (password ) {
144
- authid .Password = (OLECHAR * )password ;
145
- authid .PasswordLength = (ULONG )password_len ;
127
+ authid .Password = (OLECHAR * ) ZSTR_VAL ( password ) ;
128
+ authid .PasswordLength = (ULONG ) ZSTR_LEN ( password ) ;
146
129
} else {
147
- authid .Password = (OLECHAR * )"" ;
130
+ authid .Password = (OLECHAR * ) "" ;
148
131
authid .PasswordLength = 0 ;
149
132
}
150
133
151
134
if (domain_name ) {
152
- authid .Domain = (OLECHAR * )domain_name ;
153
- authid .DomainLength = (ULONG )domain_name_len ;
135
+ authid .Domain = (OLECHAR * ) ZSTR_VAL ( domain_name ) ;
136
+ authid .DomainLength = (ULONG ) ZSTR_LEN ( domain_name ) ;
154
137
} else {
155
- authid .Domain = (OLECHAR * )"" ;
138
+ authid .Domain = (OLECHAR * ) "" ;
156
139
authid .DomainLength = 0 ;
157
140
}
158
141
authid .Flags = SEC_WINNT_AUTH_IDENTITY_ANSI ;
@@ -225,7 +208,11 @@ PHP_METHOD(com, __construct)
225
208
226
209
if (server_name ) {
227
210
if (info .pwszName ) efree (info .pwszName );
211
+ if (server_params ) zend_string_release (server_name );
228
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 );
229
216
230
217
efree (moniker );
231
218
0 commit comments