Navigation Menu

Skip to content

Commit

Permalink
Merge branch 'jb51806-deserialize-extendeddetail' into 'master'
Browse files Browse the repository at this point in the history
[qtcontacts-sqlite] Check QContactExtendedDetail data type before deserialization. Fixes JB#51806

See merge request mer-core/qtcontacts-sqlite!51
  • Loading branch information
blam committed Nov 4, 2020
2 parents 9267656 + 4298f38 commit 14626fd
Showing 1 changed file with 17 additions and 8 deletions.
25 changes: 17 additions & 8 deletions src/engine/contactreader.cpp
Expand Up @@ -627,14 +627,23 @@ static void setValues(QContactExtendedDetail *detail, QSqlQuery *query, const in
{
setValue(detail, QContactExtendedDetail::FieldName, query->value(offset + 0));

QByteArray bytes = query->value(offset + 1).toByteArray();
QBuffer buffer(&bytes);
buffer.open(QIODevice::ReadOnly);
QDataStream in(&buffer);
in.setVersion(QDataStream::Qt_5_6);
QVariant deserialized;
in >> deserialized;
setValue(detail, QContactExtendedDetail::FieldData, deserialized);
QVariant rawValue = query->value(offset + 1);
if (rawValue.type() == QVariant::Type(QMetaType::QByteArray)) {
QByteArray bytes = rawValue.toByteArray();
QBuffer buffer(&bytes);
buffer.open(QIODevice::ReadOnly);
QDataStream in(&buffer);
in.setVersion(QDataStream::Qt_5_6);
QVariant deserialized;
in >> deserialized;

if (deserialized.isValid()) {
setValue(detail, QContactExtendedDetail::FieldData, deserialized);
return;
}
}

setValue(detail, QContactExtendedDetail::FieldData, rawValue);
}

static QMap<QString, int> contextTypes()
Expand Down

0 comments on commit 14626fd

Please sign in to comment.