<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="12" style="border: 1px #c9c399 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="https://git.reviewboard.kde.org/r/120627/">https://git.reviewboard.kde.org/r/120627/</a>
     </td>
    </tr>
   </table>
   <br />











<div>



<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
 <thead>
  <tr>
   <th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
    <a href="https://git.reviewboard.kde.org/r/120627/diff/4-5/?file=320421#file320421line294" style="color: black; font-weight: bold; text-decoration: underline;">komparepart/kompare_part.cpp</a>
    <span style="font-weight: normal;">

     (Diff revisions 4 - 5)

    </span>
   </th>
  </tr>
 </thead>

 <tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
  <tr>

   <td colspan="4"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">bool KomparePart::fetchURL( const QUrl& url, bool addToSource )</pre></td>

  </tr>
 </tbody>



 
 

 <tbody>

  <tr>
    <th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">294</font></th>
    <td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                <span class="n">tempFileName</span> <span class="o">=</span> <span class="n">QDir</span><span class="o">::</span><span class="n">tempPath</span><span class="p">()</span> <span class="o">+</span> <span class="s">"/kompare."</span> <span class="o">+</span> <span class="n">url</span><span class="p">.</span><span class="n">fileName</span><span class="p">();</span></pre></td>
    <th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">294</font></th>
    <td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                <span class="n">QTemporaryFile</span> <span class="o">*</span><span class="n">tempFile</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QTemporaryFile</span><span class="p">;</span></pre></td>
  </tr>

 </tbody>

</table>

 <div style="margin-left: 2em;">

  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">This use of QTemporaryFile is not secure. There is a hole between the creation time of the temporary file and the start time of KIO::file_copy in which an attacker could create the file. I don't know whether KIO would follow malicious symlinks, but at the very least the attacker could make the download fail.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Needless to say, the revision 4 solution "tempFileName = QDir::tempPath() + "/kompare." + url.fileName();" is also insecure.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">What about using QTemporaryDir also in this situation? Then you have a secure temporary directory that you own, inside which you can safely use even predictable file names, and you can also reuse the existing cleanup code.</p></pre>
 </div>
</div>
<br />



<p>- Kevin Kofler</p>


<br />
<p>On Oktober 18th, 2014, 5:01 vorm. UTC, Jeremy Whiting wrote:</p>









<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="12" style="border: 1px #888a85 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
 <tr>
  <td>

<div>Review request for kdelibs and Kevin Kofler.</div>
<div>By Jeremy Whiting.</div>


<p style="color: grey;"><i>Updated Okt. 18, 2014, 5:01 vorm.</i></p>









<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
kompare
</div>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Change KUrl to QUrl.
Use QLayout/QFrame instead of KVBox (seems broken though somehow)
Use QFileDialog instead of KFileDialog.</p></pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">It builds and runs. The compare dialog ui looks squished though and doesn't resize like it used to, must be something I did wrong when porting away from KVBox</p></pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>libdialogpages/pagebase.cpp <span style="color: grey">(ba1574aed7124ede49e1c5908a8fe693cf7bc5d3)</span></li>

 <li>libdialogpages/viewpage.h <span style="color: grey">(b5b770d1441650564106e1cc7ef7e587f6ee142d)</span></li>

 <li>libdialogpages/viewpage.cpp <span style="color: grey">(07bdba5e1edf55a6dcd02e5deef58d30c07660c2)</span></li>

 <li>libdialogpages/filessettings.h <span style="color: grey">(dc3306e34fe1b4eb7cb6a9d2b598f91932bedda0)</span></li>

 <li>libdialogpages/filessettings.cpp <span style="color: grey">(0e19dc00f22a2f6e9588bf2d110dbde682888472)</span></li>

 <li>libdialogpages/pagebase.h <span style="color: grey">(0cef46feaa2cc81deff12c2c5f739e6be6df1b49)</span></li>

 <li>libdialogpages/CMakeLists.txt <span style="color: grey">(769a1154c56e8eb8aa42f1bc6d84e0f9a4154fd0)</span></li>

 <li>libdialogpages/dialogpagesexport.h <span style="color: grey">(b2de57f6616739d353d4889ef4965ab07f1191aa)</span></li>

 <li>libdialogpages/diffpage.h <span style="color: grey">(37490b1ebb245e9648530429da63a9240010dddd)</span></li>

 <li>libdialogpages/diffpage.cpp <span style="color: grey">(7800b486e023cffe41e1fa3e9e60781250ea4199)</span></li>

 <li>libdialogpages/filespage.h <span style="color: grey">(42afafcd0fc8bc0a01e32b79d414742937d791fb)</span></li>

 <li>libdialogpages/filespage.cpp <span style="color: grey">(6a87fe36abd57bdaa09b516de38969db6c6f2298)</span></li>

 <li>kompareurldialog.h <span style="color: grey">(dc50c588e70835ad9292da1baf5222f58f512f67)</span></li>

 <li>kompareurldialog.cpp <span style="color: grey">(7de050bc44770a79f8f7d789cabd95d6707a40f1)</span></li>

 <li>komparepart/komparesplitter.cpp <span style="color: grey">(8d496bf279caa7cb9a305c2d15131f591c48818d)</span></li>

 <li>komparepart/komparelistview.cpp <span style="color: grey">(35bbab849d8b7938cba518e97a00ed50cae35612)</span></li>

 <li>komparepart/kompareprefdlg.cpp <span style="color: grey">(118485663390e9563a77741b490a9cdf8bf6d464)</span></li>

 <li>komparepart/komparesaveoptionswidget.cpp <span style="color: grey">(4c9acba6a7f9c6dda04130946faac37138422875)</span></li>

 <li>interfaces/kompareinterface.h <span style="color: grey">(53b19d944b2a4a65c14ea41b8f1c0997581933db)</span></li>

 <li>kompare_shell.h <span style="color: grey">(8549fcdc4d1536c58734f2bc3a78b9ebc42c6c5f)</span></li>

 <li>kompare_shell.cpp <span style="color: grey">(dcc45513f3f9f5f94869046989b6b4f5b1c0995e)</span></li>

 <li>komparenavtreepart/CMakeLists.txt <span style="color: grey">(53e8e670e70629afac9197fc108d844733ec5c07)</span></li>

 <li>komparenavtreepart/komparenavtreepart.cpp <span style="color: grey">(3faceff78fbbd2f083cd0a7837c74f50fe543474)</span></li>

 <li>komparepart/CMakeLists.txt <span style="color: grey">(09b61e6ca0cdce391fc759be49a672a050cc16cd)</span></li>

 <li>komparepart/kompare_part.h <span style="color: grey">(24475f1b0ccf7fbeda56860a9a69955cd0b82808)</span></li>

 <li>komparepart/kompare_part.cpp <span style="color: grey">(4d40be0dedcfb91b77ee239de11188b328f8bc13)</span></li>

 <li>CMakeLists.txt <span style="color: grey">(38167c2099d0ea1600bd5a6893982e809902fa3a)</span></li>

 <li>doc/index.docbook <span style="color: grey">(578d12a41d9a6afed441ffd38c39bff16c096ab2)</span></li>

 <li>libdialogpages/viewsettings.h <span style="color: grey">(dbf6afe0d0c70e548e32dfc09391d67ef595cdba)</span></li>

 <li>libdialogpages/viewsettings.cpp <span style="color: grey">(5a69d0bd9a49f7a3881940c4ea8ad407be56adc1)</span></li>

 <li>main.cpp <span style="color: grey">(4132c8442f8546ee7d365051dda0e32196249217)</span></li>

</ul>

<p><a href="https://git.reviewboard.kde.org/r/120627/diff/" style="margin-left: 3em;">View Diff</a></p>






  </td>
 </tr>
</table>








  </div>
 </body>
</html>