diff options
author | Dylan Noblesmith <nobled@dreamwidth.org> | 2011-11-26 06:02:04 +0000 |
---|---|---|
committer | Luke Dashjr <luke-jr+git@utopios.org> | 2011-12-20 18:42:30 -0500 |
commit | 96f1723bb1f4155357b4e33988a2b99ee674c549 (patch) | |
tree | f21c2b656be1b5b1b95f03ad01856b472c71dab2 /src/qt/askpassphrasedialog.cpp | |
parent | f503a1486a6cbda8d0e73923fec8de3ced253b28 (diff) | |
download | bitcoin-96f1723bb1f4155357b4e33988a2b99ee674c549.tar.xz |
Implement an mlock()'d string class for storing passphrases
SecureString is identical to std::string except with secure_allocator
substituting for std::allocator. This makes casting between them
impossible, so converting between the two at API boundaries requires
calling ::c_str() for now.
Diffstat (limited to 'src/qt/askpassphrasedialog.cpp')
-rw-r--r-- | src/qt/askpassphrasedialog.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/qt/askpassphrasedialog.cpp b/src/qt/askpassphrasedialog.cpp index b52acf4545..4ee67e7c87 100644 --- a/src/qt/askpassphrasedialog.cpp +++ b/src/qt/askpassphrasedialog.cpp @@ -70,16 +70,17 @@ void AskPassphraseDialog::setModel(WalletModel *model) void AskPassphraseDialog::accept() { - std::string oldpass, newpass1, newpass2; + SecureString oldpass, newpass1, newpass2; if(!model) return; - // TODO: mlock memory / munlock on return so they will not be swapped out, really need "mlockedstring" wrapper class to do this safely oldpass.reserve(MAX_PASSPHRASE_SIZE); newpass1.reserve(MAX_PASSPHRASE_SIZE); newpass2.reserve(MAX_PASSPHRASE_SIZE); - oldpass.assign(ui->passEdit1->text().toStdString()); - newpass1.assign(ui->passEdit2->text().toStdString()); - newpass2.assign(ui->passEdit3->text().toStdString()); + // TODO: get rid of this .c_str() by implementing SecureString::operator=(std::string) + // Alternately, find a way to make this input mlock()'d to begin with. + oldpass.assign(ui->passEdit1->text().toStdString().c_str()); + newpass1.assign(ui->passEdit2->text().toStdString().c_str()); + newpass2.assign(ui->passEdit3->text().toStdString().c_str()); switch(mode) { |