summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXinchen Hui <laruence@gmail.com>2015-09-09 18:02:27 +0800
committerXinchen Hui <laruence@gmail.com>2015-09-09 18:02:27 +0800
commit6d885e395ca33fef28c5b84b7cfd59885aaa6e2d (patch)
tree0ea90c2191367f7517b845f2bad6c02ca5b2e917
parent59e8eae4b004c97e1f8f4b16e5a8f0fc344080b5 (diff)
parentfb9d934d5146ee4342c0b9f9a49b905746853f95 (diff)
downloadphp-git-6d885e395ca33fef28c5b84b7cfd59885aaa6e2d.tar.gz
Merge branch 'master' of git.php.net:/php-src
-rw-r--r--Zend/zend_vm_def.h14
-rw-r--r--Zend/zend_vm_execute.h14
-rw-r--r--ext/ldap/ldap.c4
-rw-r--r--ext/ldap/tests/ldap_search_overrides.phpt215
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===