openldap-cve-ppolicy-forward-updates.patch 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. (CVE-2011-1024) CVE-2011-1024 openldap: forwarded bind failure messages cause success
  2. Upstream patch: http://www.openldap.org/devel/cvsweb.cgi/servers/slapd/back-ldap/chain.c.diff?r1=1.76&r2=1.77
  3. diff -uNPrp openldap-2.4.23/servers/slapd/back-ldap/chain.c openldap-2.4.23.fix/servers/slapd/back-ldap/chain.c
  4. --- openldap-2.4.23/servers/slapd/back-ldap/chain.c 2010-04-13 22:23:28.000000000 +0200
  5. +++ openldap-2.4.23.fix/servers/slapd/back-ldap/chain.c 2011-02-28 14:43:16.377111481 +0100
  6. @@ -854,6 +854,7 @@ ldap_chain_response( Operation *op, Slap
  7. /* we need this to know if back-ldap returned any result */
  8. lb.lb_lc = lc;
  9. + sc2.sc_next = sc->sc_next;
  10. sc2.sc_private = &lb;
  11. sc2.sc_response = ldap_chain_cb_response;
  12. op->o_callback = &sc2;
  13. @@ -947,6 +948,7 @@ ldap_chain_response( Operation *op, Slap
  14. case LDAP_SUCCESS:
  15. case LDAP_REFERRAL:
  16. + sr_err = rs->sr_err;
  17. /* slapd-ldap sent response */
  18. if ( !op->o_abandon && lb.lb_status != LDAP_CH_RES ) {
  19. /* FIXME: should we send response? */
  20. @@ -974,7 +976,7 @@ cannot_chain:;
  21. default:
  22. #endif /* LDAP_CONTROL_X_CHAINING_BEHAVIOR */
  23. if ( LDAP_CHAIN_RETURN_ERR( lc ) ) {
  24. - rs->sr_err = rc;
  25. + sr_err = rs->sr_err = rc;
  26. rs->sr_type = sr_type;
  27. } else {
  28. @@ -992,7 +994,8 @@ cannot_chain:;
  29. }
  30. if ( lb.lb_status == LDAP_CH_NONE && rc != SLAPD_ABANDON ) {
  31. - op->o_callback = NULL;
  32. + /* give the remaining callbacks a chance */
  33. + op->o_callback = sc->sc_next;
  34. rc = rs->sr_err = slap_map_api2result( rs );
  35. send_ldap_result( op, rs );
  36. }