]> granicus.if.org Git - php/commitdiff
fix datatype for zpp, yet a followup on bug #73679
authorAnatol Belski <ab@php.net>
Mon, 12 Dec 2016 00:26:06 +0000 (01:26 +0100)
committerAnatol Belski <ab@php.net>
Mon, 12 Dec 2016 00:26:06 +0000 (01:26 +0100)
ext/com_dotnet/com_com.c

index ec1c72191c86f1fb418f7cccdb2166a4d1458952..86b3bd1dd5882b0fd84da79f7fc2318acd21afee 100644 (file)
@@ -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) {