diff options
author | Anatol Belski <ab@php.net> | 2016-12-12 01:26:06 +0100 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2016-12-12 01:26:06 +0100 |
commit | 3473b519c0337937a7d667273ec971825db9ea6a (patch) | |
tree | 15783d32845b73cea0e0a6025ab3cdfb340da016 | |
parent | ee2625e252044f729248b97aef0caa73d357a1c2 (diff) | |
download | php-git-3473b519c0337937a7d667273ec971825db9ea6a.tar.gz |
fix datatype for zpp, yet a followup on bug #73679
-rw-r--r-- | ext/com_dotnet/com_com.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/ext/com_dotnet/com_com.c b/ext/com_dotnet/com_com.c index ec1c72191c..86b3bd1dd5 100644 --- a/ext/com_dotnet/com_com.c +++ b/ext/com_dotnet/com_com.c @@ -52,6 +52,7 @@ PHP_FUNCTION(com_create_instance) RPC_C_AUTHN_LEVEL_DEFAULT, RPC_C_IMP_LEVEL_IMPERSONATE, &authid, EOAC_NONE }; + zend_long cp = CP_ACP; php_com_initialize(); obj = CDNO_FETCH(object); @@ -59,16 +60,22 @@ PHP_FUNCTION(com_create_instance) if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS(), "s|s!ls", &module_name, &module_name_len, &server_name, &server_name_len, - &obj->code_page, &typelib_name, &typelib_name_len) && + &cp, &typelib_name, &typelib_name_len) && FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS(), "sa|ls", - &module_name, &module_name_len, &server_params, &obj->code_page, + &module_name, &module_name_len, &server_params, &cp, &typelib_name, &typelib_name_len)) { php_com_throw_exception(E_INVALIDARG, "Could not create COM object - invalid arguments!"); return; } + if (Z_L(0) > cp || ZEND_LONG_INT_OVFL(cp)) { + php_com_throw_exception(E_INVALIDARG, "Could not create COM object - invalid codepage!"); + return; + } + obj->code_page = (int)cp; + if (server_name) { ctx = CLSCTX_REMOTE_SERVER; } else if (server_params) { |