fix crash by guarding QString::setRawData

QString::lastIndexOf can return a -1 if the pattern was not found. Using
a QString that was created by QString::setRawData with a size of -1 will
result in a crash.

Change-Id: Ie02645f00db7e7150424ca367095a7ebc9051578
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
This commit is contained in:
David Schulz
2017-01-24 08:40:32 +01:00
parent 6b26713444
commit b2ea28c79e

View File

@@ -152,6 +152,10 @@ QVector<ProFileEvaluator::SourceFile> ProFileEvaluator::absoluteFileValues(
} }
{ {
int nameOff = absEl.lastIndexOf(QLatin1Char('/')); int nameOff = absEl.lastIndexOf(QLatin1Char('/'));
if (nameOff < 0) {
// The entry is garbage (possibly after env var expansion)
goto next;
}
QString absDir = d->m_tmp1.setRawData(absEl.constData(), nameOff); QString absDir = d->m_tmp1.setRawData(absEl.constData(), nameOff);
if (IoUtils::exists(absDir)) { if (IoUtils::exists(absDir)) {
QString wildcard = d->m_tmp2.setRawData(absEl.constData() + nameOff + 1, QString wildcard = d->m_tmp2.setRawData(absEl.constData() + nameOff + 1,