Unverified Commit f3fbd655 authored by Don Gagne's avatar Don Gagne Committed by GitHub

Merge pull request #6355 from wingtra/fix/deserializing

Guard terrain tile from reading beyond the bytearray end
parents 96f66569 83300003
...@@ -56,21 +56,57 @@ TerrainTile::TerrainTile(QByteArray byteArray) ...@@ -56,21 +56,57 @@ TerrainTile::TerrainTile(QByteArray byteArray)
QDataStream stream(byteArray); QDataStream stream(byteArray);
float lat,lon; float lat,lon;
stream >> lat if (stream.atEnd()) {
>> lon; qWarning() << "Terrain tile binary data does not contain all data";
return;
}
stream >> lat;
if (stream.atEnd()) {
qWarning() << "Terrain tile binary data does not contain all data";
return;
}
stream >> lon;
_southWest.setLatitude(lat); _southWest.setLatitude(lat);
_southWest.setLongitude(lon); _southWest.setLongitude(lon);
stream >> lat
>> lon; if (stream.atEnd()) {
qWarning() << "Terrain tile binary data does not contain all data";
return;
}
stream >> lat;
if (stream.atEnd()) {
qWarning() << "Terrain tile binary data does not contain all data";
return;
}
stream >> lon;
_northEast.setLatitude(lat); _northEast.setLatitude(lat);
_northEast.setLongitude(lon); _northEast.setLongitude(lon);
if (stream.atEnd()) {
stream >> _minElevation qWarning() << "Terrain tile binary data does not contain all data";
>> _maxElevation return;
>> _avgElevation }
>> _gridSizeLat stream >> _minElevation;
>> _gridSizeLon; if (stream.atEnd()) {
qWarning() << "Terrain tile binary data does not contain all data";
return;
}
stream >> _maxElevation;
if (stream.atEnd()) {
qWarning() << "Terrain tile binary data does not contain all data";
return;
}
stream >> _avgElevation;
if (stream.atEnd()) {
qWarning() << "Terrain tile binary data does not contain all data";
return;
}
stream >> _gridSizeLat;
if (stream.atEnd()) {
qWarning() << "Terrain tile binary data does not contain all data";
return;
}
stream >> _gridSizeLon;
qCDebug(TerrainTileLog) << "Loading terrain tile: " << _southWest << " - " << _northEast; qCDebug(TerrainTileLog) << "Loading terrain tile: " << _southWest << " - " << _northEast;
qCDebug(TerrainTileLog) << "min:max:avg:sizeLat:sizeLon" << _minElevation << _maxElevation << _avgElevation << _gridSizeLat << _gridSizeLon; qCDebug(TerrainTileLog) << "min:max:avg:sizeLat:sizeLon" << _minElevation << _maxElevation << _avgElevation << _gridSizeLat << _gridSizeLon;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment