I think last arg should be `dsn.Password`.  General idea in this loop is that user gets back as default whatever was previously entered.  With `def.Password` as default, if they change the default password then mess up something else and have to re-do the loop, they'll want the new password auto-completed, and that will have been set in `dsn.Password`.