Implement custom deserializer to add our own sanity checks
[quassel.git] / src / common / protocols / datastream / datastreampeer.cpp
index 5c524ce..240560d 100644 (file)
@@ -25,6 +25,7 @@
 
 #include "datastreampeer.h"
 #include "quassel.h"
 
 #include "datastreampeer.h"
 #include "quassel.h"
+#include "serializers/serializers.h"
 
 using namespace Protocol;
 
 
 using namespace Protocol;
 
@@ -59,7 +60,8 @@ void DataStreamPeer::processMessage(const QByteArray &msg)
     QDataStream stream(msg);
     stream.setVersion(QDataStream::Qt_4_2);
     QVariantList list;
     QDataStream stream(msg);
     stream.setVersion(QDataStream::Qt_4_2);
     QVariantList list;
-    stream >> list;
+    if (!Serializers::deserialize(stream, features(), list))
+        close("Peer sent corrupt data, closing down!");
     if (stream.status() != QDataStream::Ok) {
         close("Peer sent corrupt data, closing down!");
         return;
     if (stream.status() != QDataStream::Ok) {
         close("Peer sent corrupt data, closing down!");
         return;