- We should clean up such "helper" objects created in this function to don't
have them around until "mem_ctx" is destroyed
- Remove a from my view pointless comment "This is a password set, not change"
since an external argument "user_change" decides this ("modify" or "(re)set")
msg = ldb_msg_new(mem_ctx);
if (msg == NULL) {
ldb_transaction_cancel(ldb);
msg = ldb_msg_new(mem_ctx);
if (msg == NULL) {
ldb_transaction_cancel(ldb);
return NT_STATUS_NO_MEMORY;
}
msg->dn = ldb_dn_copy(msg, user_dn);
if (!msg->dn) {
ldb_transaction_cancel(ldb);
return NT_STATUS_NO_MEMORY;
}
msg->dn = ldb_dn_copy(msg, user_dn);
if (!msg->dn) {
ldb_transaction_cancel(ldb);
+ talloc_free(user_dn);
+ talloc_free(msg);
return NT_STATUS_NO_MEMORY;
}
return NT_STATUS_NO_MEMORY;
}
user_dn, NULL,
msg, new_password,
lmNewHash, ntNewHash,
user_dn, NULL,
msg, new_password,
lmNewHash, ntNewHash,
- user_change, /* This is a password set, not change */
reject_reason, _dominfo);
if (!NT_STATUS_IS_OK(nt_status)) {
ldb_transaction_cancel(ldb);
reject_reason, _dominfo);
if (!NT_STATUS_IS_OK(nt_status)) {
ldb_transaction_cancel(ldb);
+ talloc_free(user_dn);
+ talloc_free(msg);
ret = samdb_replace(ldb, mem_ctx, msg);
if (ret != LDB_SUCCESS) {
ldb_transaction_cancel(ldb);
ret = samdb_replace(ldb, mem_ctx, msg);
if (ret != LDB_SUCCESS) {
ldb_transaction_cancel(ldb);
+ talloc_free(user_dn);
+ talloc_free(msg);
return NT_STATUS_ACCESS_DENIED;
}
return NT_STATUS_ACCESS_DENIED;
}
ret = ldb_transaction_commit(ldb);
if (ret != LDB_SUCCESS) {
DEBUG(0,("Failed to commit transaction to change password on %s: %s\n",
ret = ldb_transaction_commit(ldb);
if (ret != LDB_SUCCESS) {
DEBUG(0,("Failed to commit transaction to change password on %s: %s\n",
- ldb_dn_get_linearized(msg->dn),
+ ldb_dn_get_linearized(user_dn),
return NT_STATUS_TRANSACTION_ABORTED;
}
return NT_STATUS_TRANSACTION_ABORTED;
}
+
+ talloc_free(user_dn);