+ int el_flags = 0;
+
+ if (io->ac->req->operation == LDB_MODIFY) {
+ el_flags |= LDB_FLAG_MOD_REPLACE;
+ }
+
+ /* make sure we replace all the old attributes */
+ if (io->ac->update_password && el_flags != 0) {
+ ret = ldb_msg_add_empty(msg, "unicodePwd",
+ el_flags, NULL);
+ if (ret != LDB_SUCCESS) {
+ return ret;
+ }
+ ret = ldb_msg_add_empty(msg, "dBCSPwd",
+ el_flags, NULL);
+ if (ret != LDB_SUCCESS) {
+ return ret;
+ }
+ ret = ldb_msg_add_empty(msg, "ntPwdHistory",
+ el_flags, NULL);
+ if (ret != LDB_SUCCESS) {
+ return ret;
+ }
+ ret = ldb_msg_add_empty(msg, "lmPwdHistory",
+ el_flags, NULL);
+ if (ret != LDB_SUCCESS) {
+ return ret;
+ }
+ ret = ldb_msg_add_empty(msg, "supplementalCredentials",
+ el_flags, NULL);
+ if (ret != LDB_SUCCESS) {
+ return ret;
+ }
+ }
+ if (io->ac->update_lastset && el_flags != 0) {
+ ret = ldb_msg_add_empty(msg, "pwdLastSet",
+ el_flags, NULL);
+ if (ret != LDB_SUCCESS) {
+ return ret;
+ }
+ }