]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/ppolicy.c
s/HPcfgOv/OLcfgOv/
[openldap] / servers / slapd / overlays / ppolicy.c
index d7df8105a186c9a4ad55e1b2c5f88be9f654fe59..63f192dcc3eb4978feb99f19bac4a3af61754305 100644 (file)
@@ -525,9 +525,11 @@ password_scheme( struct berval *cred, struct berval *sch )
        if (cred->bv_val[e]) {
                int rc;
                rc = lutil_passwd_scheme( cred->bv_val );
-               if (rc && sch) {
-                       sch->bv_val = cred->bv_val;
-                       sch->bv_len = e;
+               if (rc) {
+                       if (sch) {
+                               sch->bv_val = cred->bv_val;
+                               sch->bv_len = e;
+                       }
                        return LDAP_SUCCESS;
                }
        }
@@ -1700,6 +1702,7 @@ do_modify:
                         */
                        sc->sc_response = ppolicy_mod_cb;
                        sc->sc_cleanup = ppolicy_mod_cb;
+                       op->o_callback = sc;
                }
 
                /*
@@ -1925,11 +1928,9 @@ ppolicy_parseCtrl(
                rs->sr_text = "passwordPolicyRequest control value not empty";
                return LDAP_PROTOCOL_ERROR;
        }
-       if ( ctrl->ldctl_iscritical ) {
-               rs->sr_text = "passwordPolicyRequest control invalid criticality";
-               return LDAP_PROTOCOL_ERROR;
-       }
-       op->o_ctrlflag[ppolicy_cid] = SLAP_CONTROL_NONCRITICAL;
+       op->o_ctrlflag[ppolicy_cid] = ctrl->ldctl_iscritical
+               ? SLAP_CONTROL_CRITICAL
+               : SLAP_CONTROL_NONCRITICAL;
 
        return LDAP_SUCCESS;
 }