summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2016-12-12 01:26:06 +0100
committerAnatol Belski <ab@php.net>2016-12-12 01:26:06 +0100
commit3473b519c0337937a7d667273ec971825db9ea6a (patch)
tree15783d32845b73cea0e0a6025ab3cdfb340da016
parentee2625e252044f729248b97aef0caa73d357a1c2 (diff)
downloadphp-git-3473b519c0337937a7d667273ec971825db9ea6a.tar.gz
fix datatype for zpp, yet a followup on bug #73679
-rw-r--r--ext/com_dotnet/com_com.c11
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) {