]> git.stg.codes - stg.git/blobdiff - stglibs/crypto.lib/blowfish.c
Handle short string correctly in blowfish encription.
[stg.git] / stglibs / crypto.lib / blowfish.c
index 90c93b9da3d27ca5cd78ac63917783ddbed29bfc..e2f275e6275b0322bab7536093245fdb263e6143 100644 (file)
@@ -504,7 +504,16 @@ void EncryptString(void * d, const void * s, size_t length, const BLOWFISH_CTX *
 size_t pos = 0;
 while (pos < length)
     {
 size_t pos = 0;
 while (pos < length)
     {
-    EncryptBlock(d + pos, s + pos, ctx);
+    if (pos + 8 < length)
+        EncryptBlock(d + pos, s + pos, ctx);
+    else
+        {
+        // Short string, use 0-padded buffer.
+        char buf[8];
+        memset(buf, 0, sizeof(buf));
+        memcpy(buf, s + pos, length - pos);
+        EncryptBlock(d + pos, buf, ctx);
+        }
     pos += 8;
     }
 }
     pos += 8;
     }
 }