Results 1 to 3 of 3

Thread: Wiping sensitive data in QML

  1. #1
    Join Date
    Mar 2012
    Qt products
    Unix/X11 Windows

    Default Wiping sensitive data in QML


    I am looking for a way to wipe properties of objects once the property is not needed any more. Reassigning unfortunately doesn't work (value is changed, but you can still find original values in memory, until the area is re-used by something else). Basically I'm looking for an equivalent of QByteArray::fill, but as I can't get to the properties themselves (only the copies), original values still dangle around the memory. Any ideas (on C++ or QML side) would be very welcome.
    Last edited by Buldozer; 6th November 2019 at 17:15.

  2. #2
    Join Date
    Mar 2012
    Qt products
    Unix/X11 Windows

    Default Re: Wiping sensitive data in QML

    To answer my own question (and help anyone else looking for an (ugly) solution to the same problem):

    In the end the problem actually turned out to be - how to modify QVariant string data directly. Turns out the biggest problem was in-place rewriting of QString data. I came up with a solution (though I don't really like it and would prefer something cleaner):

    Qt Code:
    1. Q_INVOKABLE void wipe(QVariant value)
    2. {
    3. void *valuePtr = value.d.is_shared ?>ptr : static_cast<void *>(&(;
    4. if ((value.type() == QMetaType::QString) && valuePtr) {
    5. QString *text = reinterpret_cast<QString *>(valuePtr);
    6. QChar* txtPtr = const_cast<QChar*>(text->constData()); //yes, const_cast constData(), as data() creates a modifiable copy
    7. for (int x = 0; x < text->size(); x++)
    8. *(txtPtr++) = QChar(0);
    9. }
    10. }
    To copy to clipboard, switch view to plain text mode 

  3. #3
    Join Date
    May 2007
    Thanked 4 Times in 2 Posts

    Default Re: Wiping sensitive data in QML

    The algorithm of the program: next. At the top of the program window there is a Row object, in which there is a text box and two buttons. the remaining part of the application window is occupied by the -listView Qml object. By pressing one of the buttons in Row, a dynamic object is created in the ListView Qml, it contains a button. By pressing the dynamic button in the text field, the ListElement index is passed to the Row, in which the button is pressed.

Similar Threads

  1. QTableWidget case sensitive sort
    By Raccoon29 in forum Newbie
    Replies: 20
    Last Post: 15th December 2015, 08:18
  2. URGENT time sensitive
    By schumura in forum Jobs
    Replies: 0
    Last Post: 27th July 2011, 13:54
  3. Context sensitive help on OS X
    By wconstan in forum Newbie
    Replies: 1
    Last Post: 8th January 2010, 13:14
  4. Can executable-name be case-in-sensitive in Linux ...??
    By joseph in forum Installation and Deployment
    Replies: 1
    Last Post: 3rd June 2008, 08:27
  5. Context sensitive help
    By jpn in forum Qt Programming
    Replies: 4
    Last Post: 10th February 2007, 00:27


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.