X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcommon%2Fprotocols%2Flegacy%2Flegacypeer.cpp;h=caf1bb22b942027a297a9e697ceddbaf9efae88a;hb=e8a39b4c3c92e193ab861a3fea84a261bb6fbd24;hp=19806742e1bf1c53bd0fe1fc4ba0795c32d1ca14;hpb=68878dc8366f2f4a0afe132847aad9a51a80cdbf;p=quassel.git diff --git a/src/common/protocols/legacy/legacypeer.cpp b/src/common/protocols/legacy/legacypeer.cpp index 19806742..caf1bb22 100644 --- a/src/common/protocols/legacy/legacypeer.cpp +++ b/src/common/protocols/legacy/legacypeer.cpp @@ -24,6 +24,7 @@ #include "legacypeer.h" #include "quassel.h" +#include "serializers/serializers.h" /* version.inc is no longer used for this */ const uint protocolVersion = 10; @@ -63,7 +64,10 @@ void LegacyPeer::processMessage(const QByteArray &msg) QVariant item; if (_useCompression) { QByteArray rawItem; - stream >> rawItem; + if (!Serializers::deserialize(stream, features(), rawItem)) { + close("Peer sent corrupt data: unable to load QVariant!"); + return; + } int nbytes = rawItem.size(); if (nbytes <= 4) { @@ -78,10 +82,15 @@ void LegacyPeer::processMessage(const QByteArray &msg) QDataStream itemStream(&rawItem, QIODevice::ReadOnly); itemStream.setVersion(QDataStream::Qt_4_2); - itemStream >> item; - } - else { - stream >> item; + if (!Serializers::deserialize(itemStream, features(), item)) { + close("Peer sent corrupt data: unable to load QVariant!"); + return; + } + } else { + if (!Serializers::deserialize(stream, features(), item)) { + close("Peer sent corrupt data: unable to load QVariant!"); + return; + } } if (stream.status() != QDataStream::Ok || !item.isValid()) {