[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[libmicrohttpd] 03/03: Updated test_sha* and test_md5 with unaligned dat
From: |
gnunet |
Subject: |
[libmicrohttpd] 03/03: Updated test_sha* and test_md5 with unaligned data |
Date: |
Sun, 16 May 2021 20:56:29 +0200 |
This is an automated email from the git hooks/post-receive script.
karlson2k pushed a commit to branch master
in repository libmicrohttpd.
commit 7676e698a95df3825931b48652ff32be012e3a3c
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
AuthorDate: Sun May 16 21:34:31 2021 +0300
Updated test_sha* and test_md5 with unaligned data
---
src/microhttpd/test_md5.c | 45 ++++++++++++++++++++++++++++++++++++++++++++
src/microhttpd/test_sha1.c | 2 +-
src/microhttpd/test_sha256.c | 45 ++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 91 insertions(+), 1 deletion(-)
diff --git a/src/microhttpd/test_md5.c b/src/microhttpd/test_md5.c
index 9d3ff63f..5e04ead0 100644
--- a/src/microhttpd/test_md5.c
+++ b/src/microhttpd/test_md5.c
@@ -27,6 +27,7 @@
#include "md5.h"
#include "test_helpers.h"
#include <stdio.h>
+#include <stdlib.h>
static int verbose = 0; /* verbose level (0-1)*/
@@ -369,6 +370,48 @@ test2_bin (void)
}
+/* Use data set number 7 as it has the longest sequence */
+#define DATA_POS 6
+#define MAX_OFFSET 31
+
+static int
+test_unaligned (void)
+{
+ int num_failed = 0;
+ unsigned int offset;
+ uint8_t *buf;
+ uint8_t *digest_buf;
+
+ const struct data_unit2 *const tdata = data_units2 + DATA_POS;
+
+ buf = malloc (tdata->bin_l.len + MAX_OFFSET);
+ digest_buf = malloc (MD5_DIGEST_SIZE + MAX_OFFSET);
+ if ((NULL == buf) || (NULL == digest_buf))
+ exit (99);
+
+ for (offset = MAX_OFFSET; offset >= 1; --offset)
+ {
+ struct MD5Context ctx;
+ uint8_t *unaligned_digest;
+ uint8_t *unaligned_buf;
+
+ unaligned_buf = buf + offset;
+ memcpy (unaligned_buf, tdata->bin_l.bin, tdata->bin_l.len);
+ unaligned_digest = digest_buf + MAX_OFFSET - offset;
+ memset (unaligned_digest, 0, MD5_DIGEST_SIZE);
+
+ MHD_MD5Init (&ctx);
+ MHD_MD5Update (&ctx, unaligned_buf, tdata->bin_l.len);
+ MHD_MD5Final (&ctx, unaligned_digest);
+ num_failed += check_result (__FUNCTION__, MAX_OFFSET - offset,
+ unaligned_digest, tdata->digest);
+ }
+ free (digest_buf);
+ free (buf);
+ return num_failed;
+}
+
+
int
main (int argc, char *argv[])
{
@@ -383,5 +426,7 @@ main (int argc, char *argv[])
num_failed += test2_str ();
num_failed += test2_bin ();
+ num_failed += test_unaligned ();
+
return num_failed ? 1 : 0;
}
diff --git a/src/microhttpd/test_sha1.c b/src/microhttpd/test_sha1.c
index d82a2678..4426a3c7 100644
--- a/src/microhttpd/test_sha1.c
+++ b/src/microhttpd/test_sha1.c
@@ -356,7 +356,7 @@ test2_bin (void)
}
-/* Use data set number 7 as it is the longest sequence */
+/* Use data set number 7 as it has the longest sequence */
#define DATA_POS 6
#define MAX_OFFSET 31
diff --git a/src/microhttpd/test_sha256.c b/src/microhttpd/test_sha256.c
index 863859fa..91b28af2 100644
--- a/src/microhttpd/test_sha256.c
+++ b/src/microhttpd/test_sha256.c
@@ -27,6 +27,7 @@
#include "sha256.h"
#include "test_helpers.h"
#include <stdio.h>
+#include <stdlib.h>
static int verbose = 0; /* verbose level (0-1)*/
@@ -416,6 +417,48 @@ test2_bin (void)
}
+/* Use data set number 7 as it has the longest sequence */
+#define DATA_POS 6
+#define MAX_OFFSET 31
+
+static int
+test_unaligned (void)
+{
+ int num_failed = 0;
+ unsigned int offset;
+ uint8_t *buf;
+ uint8_t *digest_buf;
+
+ const struct data_unit2 *const tdata = data_units2 + DATA_POS;
+
+ buf = malloc (tdata->bin_l.len + MAX_OFFSET);
+ digest_buf = malloc (SHA256_DIGEST_SIZE + MAX_OFFSET);
+ if ((NULL == buf) || (NULL == digest_buf))
+ exit (99);
+
+ for (offset = MAX_OFFSET; offset >= 1; --offset)
+ {
+ struct sha256_ctx ctx;
+ uint8_t *unaligned_digest;
+ uint8_t *unaligned_buf;
+
+ unaligned_buf = buf + offset;
+ memcpy (unaligned_buf, tdata->bin_l.bin, tdata->bin_l.len);
+ unaligned_digest = digest_buf + MAX_OFFSET - offset;
+ memset (unaligned_digest, 0, SHA256_DIGEST_SIZE);
+
+ MHD_SHA256_init (&ctx);
+ MHD_SHA256_update (&ctx, unaligned_buf, tdata->bin_l.len);
+ MHD_SHA256_finish (&ctx, unaligned_digest);
+ num_failed += check_result (__FUNCTION__, MAX_OFFSET - offset,
+ unaligned_digest, tdata->digest);
+ }
+ free (digest_buf);
+ free (buf);
+ return num_failed;
+}
+
+
int
main (int argc, char *argv[])
{
@@ -430,5 +473,7 @@ main (int argc, char *argv[])
num_failed += test2_str ();
num_failed += test2_bin ();
+ num_failed += test_unaligned ();
+
return num_failed ? 1 : 0;
}
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.