<table><tr><td style="">martinkostolny added a comment.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D5394" rel="noreferrer">View Revision</a></tr></table><br /><div><div><p>Sorry for answering after a longer time. I need to be sure I understand everything correctly:</p>

<p>ad checksum: I think it would be good to revert to previous code and start from ther (to ensure writing only once and not over d-bus):</p>

<ol class="remarkup-list">
<li class="remarkup-list-item">create a temp file in the same directory as target file (privileged action1)</li>
<li class="remarkup-list-item">write contents</li>
<li class="remarkup-list-item">make a checksum and remember</li>
<li class="remarkup-list-item">change owner/group of the temp file (privileged action2)</li>
<li class="remarkup-list-item">rename temp file to target one (privileged action2)</li>
<li class="remarkup-list-item">check remembered checksum (privileged action2)</li>
<li class="remarkup-list-item">if check failed, notify user</li>
</ol>

<p>Just to be sure: the changing permissions race can only be avoided when I change it before committing the QSaveFile so the temp file is not changed after atomic rename, right?</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R39 KTextEditor</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D5394" rel="noreferrer">https://phabricator.kde.org/D5394</a></div></div><br /><div><strong>To: </strong>martinkostolny, KTextEditor, fvogt<br /><strong>Cc: </strong>elvisangelaccio, aacid, ivan, lbeltrame, fvogt, apol, anthonyfieroni, cullmann, ltoscano, dhaumann, graesslin, davidedmundson, palant, kwrite-devel, dfaure, Frameworks, head7, kfunk, sars<br /></div>