summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Kivilinna <jussi.kivilinna@iki.fi>2015-05-01 14:55:58 +0300
committerJussi Kivilinna <jussi.kivilinna@iki.fi>2015-05-01 15:06:57 +0300
commit9f086ffa43f2507b9d17522a0a2e394cb273baf8 (patch)
tree357709f497737b2591625973e3f4bee9ae63b5a2
parente40eff94f9f8654c3d29e03bbb7e5ee6a43c1435 (diff)
downloadlibgcrypt-9f086ffa43f2507b9d17522a0a2e394cb273baf8.tar.gz
Use more odd chuck sizes for check_one_md
* tests/basic.c (check_one_md): Make chuck size vary oddly, instead of using fixed length of 1000 bytes. -- Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
-rw-r--r--tests/basic.c24
1 files changed, 21 insertions, 3 deletions
diff --git a/tests/basic.c b/tests/basic.c
index f3105de4..8400f9ed 100644
--- a/tests/basic.c
+++ b/tests/basic.c
@@ -5231,11 +5231,29 @@ check_one_md (int algo, const char *data, int len, const char *expect)
if (*data == '!' && !data[1])
{ /* hash one million times a "a" */
char aaa[1000];
+ size_t left = 1000 * 1000;
+ size_t startlen = 1;
+ size_t piecelen = startlen;
- /* Write in odd size chunks so that we test the buffering. */
memset (aaa, 'a', 1000);
- for (i = 0; i < 1000; i++)
- gcry_md_write (hd, aaa, 1000);
+
+ /* Write in odd size chunks so that we test the buffering. */
+ while (left > 0)
+ {
+ if (piecelen > sizeof(aaa))
+ piecelen = sizeof(aaa);
+ if (piecelen > left)
+ piecelen = left;
+
+ gcry_md_write (hd, aaa, piecelen);
+
+ left -= piecelen;
+
+ if (piecelen == sizeof(aaa))
+ piecelen = ++startlen;
+ else
+ piecelen = piecelen * 2 - ((piecelen != startlen) ? startlen : 0);
+ }
}
else
gcry_md_write (hd, data, len);