<table><tr><td style="">i.Dark_Templar created this revision.<br />i.Dark_Templar added reviewers: sitter, kfunk.<br />Restricted Application added a subscriber: kde-utils-devel.
</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/D8413" rel="noreferrer">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p>While it's usually stated that 'struct dirent' has member 'char d_name[PATH_MAX + 1]', it is possible to obtain results when this field contains a string longer than PATH_MAX + 1. Stringbuilder in that case would copy only PATH_MAX + 1 first bytes, and wouldn't add zero terminator to this copied string, which would eventually lead to crash.</p>

<p>How to reproduce:</p>

<ol class="remarkup-list">
<li class="remarkup-list-item">use ntfs filesystem (for example, via ntfs-3g)</li>
</ol>

<p>Ntfs filesystem uses maximum number of characters for restricting file name length, not bytes, and character may be longer than 1 byte.</p>

<ol class="remarkup-list" start="2">
<li class="remarkup-list-item">create a file with name out of > 255 bytes, but less than 255 characters. Use non-ascii characters for that and UTF-8 locale.</li>
</ol>

<p>It's too long filename for a Linux filesystem, but actually a valid name for ntfs filesystem.<br />
In my case, I hit a file with name of 166 characters and 264 bytes (not including zero terminator).</p>

<ol class="remarkup-list" start="3">
<li class="remarkup-list-item">run filelight on filesystem containing that file and see it crash.</li>
</ol>

<p>What should happen:<br />
Filelight should run fine, and if struct dirent::d_name is longer that PATH_MAX, it should work fine with it.</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R352 Filelight</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D8413" rel="noreferrer">https://phabricator.kde.org/D8413</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>src/localLister.cpp</div></div></div><br /><div><strong>To: </strong>i.Dark_Templar, sitter, kfunk<br /><strong>Cc: </strong>kde-utils-devel<br /></div>