summaryrefslogtreecommitdiff
path: root/ext/soap/php_encoding.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2015-03-03 10:19:12 +0300
committerDmitry Stogov <dmitry@zend.com>2015-03-03 10:19:12 +0300
commitdd50ed8a34d9d04c7f3b532e112be0453920c3a5 (patch)
treee7dfc73a3f2c9c5c12b447d4dd93eebd129b3bbb /ext/soap/php_encoding.c
parenta64e12e2a12e7a8bd98ed64232dcaa8c510c3978 (diff)
parent26827a011186ebb0c0cbabe588e7717caf4d4327 (diff)
downloadphp-git-dd50ed8a34d9d04c7f3b532e112be0453920c3a5.tar.gz
Merge branch 'PHP-5.6'
* PHP-5.6: Added type checks Fixed bug #67741 (auto_prepend_file messes up __LINE__) Check variable type before its usage as IS_ARRAY. Fixed a bug that header value is not terminated by '\0' when accessed through getenv(). Conflicts: ext/soap/php_encoding.c ext/soap/php_http.c ext/soap/soap.c
Diffstat (limited to 'ext/soap/php_encoding.c')
-rw-r--r--ext/soap/php_encoding.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c
index 3ac5a7bad4..9866d94c3f 100644
--- a/ext/soap/php_encoding.c
+++ b/ext/soap/php_encoding.c
@@ -3514,18 +3514,21 @@ static encodePtr get_array_type(xmlNodePtr node, zval *array, smart_str *type)
Z_OBJCE_P(tmp) == soap_var_class_entry) {
zval *ztype;
- if ((ztype = zend_hash_str_find(Z_OBJPROP_P(tmp), "enc_type", sizeof("enc_type")-1)) == NULL) {
+ if ((ztype = zend_hash_str_find(Z_OBJPROP_P(tmp), "enc_type", sizeof("enc_type")-1)) == NULL ||
+ Z_TYPE_P(ztype) != IS_LONG) {
soap_error0(E_ERROR, "Encoding: SoapVar has no 'enc_type' property");
}
cur_type = Z_LVAL_P(ztype);
- if ((ztype = zend_hash_str_find(Z_OBJPROP_P(tmp), "enc_stype", sizeof("enc_stype")-1)) != NULL) {
+ if ((ztype = zend_hash_str_find(Z_OBJPROP_P(tmp), "enc_stype", sizeof("enc_stype")-1)) != NULL &&
+ Z_TYPE_P(ztype) == IS_STRING) {
cur_stype = Z_STRVAL_P(ztype);
} else {
cur_stype = NULL;
}
- if ((ztype = zend_hash_str_find(Z_OBJPROP_P(tmp), "enc_ns", sizeof("enc_ns")-1)) != NULL) {
+ if ((ztype = zend_hash_str_find(Z_OBJPROP_P(tmp), "enc_ns", sizeof("enc_ns")-1)) != NULL &&
+ Z_TYPE_P(ztype) == IS_STRING) {
cur_ns = Z_STRVAL_P(ztype);
} else {
cur_ns = NULL;