<table><tr><td style="">poboiko edited the summary of this revision. <a href="https://phabricator.kde.org/transactions/detail/PHID-XACT-DREV-mrvrroarudev6ma/">(Show Details)</a>
</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/D16165">View Revision</a></tr></table><br /><div><strong>CHANGES TO REVISION SUMMARY</strong><div><div style="white-space: pre-wrap; color: #74777D;">The file from bug 375131 crashes `baloo_file_extractor`. <span style="padding: 0 2px; color: #333333; background: rgba(151, 234, 151, .6);"><br />
</span>The problem is that its EXIF data<span style="padding: 0 2px; color: #333333; background: rgba(251, 175, 175, .7);"><br />
</span><span style="padding: 0 2px; color: #333333; background: rgba(151, 234, 151, .6);"> </span>contains a key `Exif.Photo.FocalLength`, <span style="padding: 0 2px; color: #333333; background: rgba(151, 234, 151, .6);"><br />
</span>whose type is `Exiv2::unsignedRational`, and w<span style="padding: 0 2px; color: #333333; background: rgba(251, 175, 175, .7);">ith no</span><span style="padding: 0 2px; color: #333333; background: rgba(151, 234, 151, .6);">hose</span> valu<span style="padding: 0 2px; color: #333333; background: rgba(251, 175, 175, .7);">e</span><span style="padding: 0 2px; color: #333333; background: rgba(151, 234, 151, .6);">e is empty</span>.<br />
<span style="padding: 0 2px; color: #333333; background: rgba(251, 175, 175, .7);">Inside Exiv2</span><span style="padding: 0 2px; color: #333333; background: rgba(151, 234, 151, .6);">On the other hand</span>, <span style="padding: 0 2px; color: #333333; background: rgba(251, 175, 175, .7);">when we try call `</span><span style="padding: 0 2px; color: #333333; background: rgba(151, 234, 151, .6);">the `Exiv2::Value::</span>toFloat()` <span style="padding: 0 2px; color: #333333; background: rgba(251, 175, 175, .7);">on it,</span><span style="padding: 0 2px; color: #333333; background: rgba(151, 234, 151, .6);">call relies on at least single component of a value, <br />
causing undefined behavior (i.e.</span> <span style="padding: 0 2px; color: #333333; background: rgba(251, 175, 175, .7);">it tries to look for two numbers inside `value`,</span><span style="padding: 0 2px; color: #333333; background: rgba(151, 234, 151, .6);">crash) if there is none.</span><br />
<span style="padding: 0 2px; color: #333333; background: rgba(251, 175, 175, .7);">finds none and crashes.</span><br />
This is simple workaround: if we got a property with no value, just return an empty QVariant().<br />
<span style="padding: 0 2px; color: #333333; background: rgba(251, 175, 175, .7);"><br />
</span>(unfortunately, didn't manage to reproduce the hang reported in the bug originally)<br />
<br />
<span style="padding: 0 2px; color: #333333; background: rgba(151, 234, 151, .6);">BUG: 352856<br />
BUG: 353848<br />
BUG: 361259<br />
</span>CCBUG: 375131</div></div></div><br /><div><strong>REPOSITORY</strong><div><div>R286 KFileMetaData</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D16165">https://phabricator.kde.org/D16165</a></div></div><br /><div><strong>To: </strong>poboiko, Baloo, Frameworks<br /><strong>Cc: </strong>bruns, astippich, kde-frameworks-devel, ashaposhnikov, michaelh, spoorun, ngraham, abrahams<br /></div>