Save Core settings synchronously and report errors.
[quassel.git] / src / core / cipher.cpp
index 7cc75d0..a8232a3 100644 (file)
@@ -364,6 +364,10 @@ QByteArray Cipher::blowfishECB(QByteArray cipherText, bool direction)
     }
     else
     {
+        // ECB Blowfish encodes in blocks of 12 chars, so anything else is malformed input
+        if ((temp.length() % 12) != 0)
+            return cipherText;
+
         temp = b64ToByte(temp);
         while ((temp.length() % 8) != 0) temp.append('\0');
     }
@@ -376,8 +380,13 @@ QByteArray Cipher::blowfishECB(QByteArray cipherText, bool direction)
     if (!cipher.ok())
         return cipherText;
 
-    if (direction)
+    if (direction) {
+        // Sanity check
+        if ((temp2.length() % 8) != 0)
+            return cipherText;
+
         temp2 = byteToB64(temp2);
+    }
 
     return temp2;
 }
@@ -420,13 +429,13 @@ QByteArray Cipher::byteToB64(QByteArray text)
         right += v;
 
         for (int i = 0; i < 6; i++) {
-            encoded.append(base64.at(right & 0x3F).toAscii());
+            encoded.append(base64.at(right & 0x3F).toLatin1());
             right = right >> 6;
         }
 
-        //TODO make sure the .toascii doesn't break anything
+        //TODO make sure the .toLatin1 doesn't break anything
         for (int i = 0; i < 6; i++) {
-            encoded.append(base64.at(left & 0x3F).toAscii());
+            encoded.append(base64.at(left & 0x3F).toLatin1());
             left = left >> 6;
         }
     }