diff options
author | Xinchen Hui <laruence@gmail.com> | 2015-09-09 18:02:27 +0800 |
---|---|---|
committer | Xinchen Hui <laruence@gmail.com> | 2015-09-09 18:02:27 +0800 |
commit | 6d885e395ca33fef28c5b84b7cfd59885aaa6e2d (patch) | |
tree | 0ea90c2191367f7517b845f2bad6c02ca5b2e917 | |
parent | 59e8eae4b004c97e1f8f4b16e5a8f0fc344080b5 (diff) | |
parent | fb9d934d5146ee4342c0b9f9a49b905746853f95 (diff) | |
download | php-git-6d885e395ca33fef28c5b84b7cfd59885aaa6e2d.tar.gz |
Merge branch 'master' of git.php.net:/php-src
-rw-r--r-- | Zend/zend_vm_def.h | 14 | ||||
-rw-r--r-- | Zend/zend_vm_execute.h | 14 | ||||
-rw-r--r-- | ext/ldap/ldap.c | 4 | ||||
-rw-r--r-- | ext/ldap/tests/ldap_search_overrides.phpt | 215 |
4 files changed, 233 insertions, 14 deletions
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 799a66e5eb..193ea32c62 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -6102,10 +6102,11 @@ ZEND_VM_HANDLER(78, ZEND_FE_FETCH_R, VAR, ANY) } } else { zend_error(E_WARNING, "Invalid argument supplied for foreach()"); -ZEND_VM_C_LABEL(fe_fetch_r_exit): - if (EXPECTED(!EG(exception))) { - ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value); + if (UNEXPECTED(EG(exception))) { + HANDLE_EXCEPTION(); } +ZEND_VM_C_LABEL(fe_fetch_r_exit): + ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value); ZEND_VM_CONTINUE(); } @@ -6293,10 +6294,11 @@ ZEND_VM_HANDLER(126, ZEND_FE_FETCH_RW, VAR, ANY) } } else { zend_error(E_WARNING, "Invalid argument supplied for foreach()"); -ZEND_VM_C_LABEL(fe_fetch_w_exit): - if (EXPECTED(!EG(exception))) { - ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value); + if (UNEXPECTED(EG(exception))) { + HANDLE_EXCEPTION(); } +ZEND_VM_C_LABEL(fe_fetch_w_exit): + ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value); ZEND_VM_CONTINUE(); } diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index a9cb1e6207..2889de55f2 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -15912,10 +15912,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_FETCH_R_SPEC_VAR_HANDLER(ZE } } else { zend_error(E_WARNING, "Invalid argument supplied for foreach()"); -fe_fetch_r_exit: - if (EXPECTED(!EG(exception))) { - ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value); + if (UNEXPECTED(EG(exception))) { + HANDLE_EXCEPTION(); } +fe_fetch_r_exit: + ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value); ZEND_VM_CONTINUE(); } @@ -16103,10 +16104,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_FETCH_RW_SPEC_VAR_HANDLER(Z } } else { zend_error(E_WARNING, "Invalid argument supplied for foreach()"); -fe_fetch_w_exit: - if (EXPECTED(!EG(exception))) { - ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value); + if (UNEXPECTED(EG(exception))) { + HANDLE_EXCEPTION(); } +fe_fetch_w_exit: + ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value); ZEND_VM_CONTINUE(); } diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index 80ed4961c2..c717e63982 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -667,7 +667,7 @@ static void php_set_opts(LDAP *ldap, int sizelimit, int timelimit, int deref, in /* timelimit */ if (timelimit > -1) { #if (LDAP_API_VERSION >= 2004) || HAVE_NSLDAP || HAVE_ORALDAP - ldap_get_option(ldap, LDAP_OPT_SIZELIMIT, old_timelimit); + ldap_get_option(ldap, LDAP_OPT_TIMELIMIT, old_timelimit); ldap_set_option(ldap, LDAP_OPT_TIMELIMIT, &timelimit); #else *old_timelimit = ldap->ld_timelimit; @@ -678,7 +678,7 @@ static void php_set_opts(LDAP *ldap, int sizelimit, int timelimit, int deref, in /* deref */ if (deref > -1) { #if (LDAP_API_VERSION >= 2004) || HAVE_NSLDAP || HAVE_ORALDAP - ldap_get_option(ldap, LDAP_OPT_SIZELIMIT, old_deref); + ldap_get_option(ldap, LDAP_OPT_DEREF, old_deref); ldap_set_option(ldap, LDAP_OPT_DEREF, &deref); #else *old_deref = ldap->ld_deref; diff --git a/ext/ldap/tests/ldap_search_overrides.phpt b/ext/ldap/tests/ldap_search_overrides.phpt new file mode 100644 index 0000000000..72d8e2498e --- /dev/null +++ b/ext/ldap/tests/ldap_search_overrides.phpt @@ -0,0 +1,215 @@ +--TEST-- +ldap_search() test - test that overrides aren't permanent +--CREDITS-- +Tyson Andre <tandre@ifwe.co> +# Based on ldap_search_basic.phpt +--SKIPIF-- +<?php +require_once('skipif.inc'); +require_once('skipifbindfailure.inc'); +?> +--FILE-- +<?php +include "connect.inc"; + +$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); +ldap_set_option($link, LDAP_OPT_DEREF, LDAP_DEREF_SEARCHING); +ldap_set_option($link, LDAP_OPT_SIZELIMIT, 123); +ldap_set_option($link, LDAP_OPT_TIMELIMIT, 33); +ldap_set_option($link, LDAP_OPT_NETWORK_TIMEOUT, 44); + +insert_dummy_data($link, $base); +var_dump( + $result = ldap_search($link, "$base", "(objectClass=person)", array(), null, 111, 22, LDAP_DEREF_NEVER), + ldap_get_entries($link, $result) +); +var_dump( + ldap_get_option($link, LDAP_OPT_DEREF, $option), + $option, + ldap_get_option($link, LDAP_OPT_SIZELIMIT, $option), + $option, + ldap_get_option($link, LDAP_OPT_TIMELIMIT, $option), + $option, + ldap_get_option($link, LDAP_OPT_NETWORK_TIMEOUT, $option), + $option +); +?> +===DONE=== +--CLEAN-- +<?php +include "connect.inc"; + +$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); +remove_dummy_data($link, $base); +?> +--EXPECTF-- +resource(%d) of type (ldap result) +array(4) { + ["count"]=> + int(3) + [0]=> + array(14) { + ["objectclass"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(6) "person" + } + [0]=> + string(11) "objectclass" + ["cn"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(5) "userA" + } + [1]=> + string(2) "cn" + ["sn"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(7) "testSN1" + } + [2]=> + string(2) "sn" + ["userpassword"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(4) "oops" + } + [3]=> + string(12) "userpassword" + ["telephonenumber"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(14) "xx-xx-xx-xx-xx" + } + [4]=> + string(15) "telephonenumber" + ["description"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(6) "user A" + } + [5]=> + string(11) "description" + ["count"]=> + int(6) + ["dn"]=> + string(%d) "cn=userA,%s" + } + [1]=> + array(12) { + ["objectclass"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(6) "person" + } + [0]=> + string(11) "objectclass" + ["cn"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(5) "userB" + } + [1]=> + string(2) "cn" + ["sn"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(7) "testSN2" + } + [2]=> + string(2) "sn" + ["userpassword"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(15) "oopsIDitItAgain" + } + [3]=> + string(12) "userpassword" + ["description"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(6) "user B" + } + [4]=> + string(11) "description" + ["count"]=> + int(5) + ["dn"]=> + string(%d) "cn=userB,%s" + } + [2]=> + array(10) { + ["objectclass"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(6) "person" + } + [0]=> + string(11) "objectclass" + ["cn"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(5) "userC" + } + [1]=> + string(2) "cn" + ["sn"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(7) "testSN3" + } + [2]=> + string(2) "sn" + ["userpassword"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(17) "0r1g1na1 passw0rd" + } + [3]=> + string(12) "userpassword" + ["count"]=> + int(4) + ["dn"]=> + string(%d) "cn=userC,cn=userB,%s" + } +} +bool(true) +int(1) +bool(true) +int(123) +bool(true) +int(33) +bool(true) +int(44) +===DONE=== |