From c6404e8329319e98dfa693457e7224fa9b1f7ba8 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 24 Oct 2008 04:10:50 +0000 Subject: [PATCH] Accept short data svn path=/trunk/; revision=7625 --- ChangeLog | 7 +++++++ glib/gchecksum.c | 1 - tests/checksum-test.c | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 4527b80..b339e8e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2008-10-23 Matthias Clasen + * glib/gchecksum.c (g_compute_checksum_for_data): Accept + lengths < 2. Patch by Tommi Komulainen + + * tests/checksum-test.c: Add a test for this + +2008-10-23 Matthias Clasen + Bug 556921 – gpoll.h breaks hal compilation * glib/gpoll.h: Include gtypes.h. Pointed out by Anis Elleuch diff --git a/glib/gchecksum.c b/glib/gchecksum.c index 41cc1f8..529f79b 100644 --- a/glib/gchecksum.c +++ b/glib/gchecksum.c @@ -1389,7 +1389,6 @@ g_compute_checksum_for_data (GChecksumType checksum_type, g_return_val_if_fail (IS_VALID_TYPE (checksum_type), NULL); g_return_val_if_fail (data != NULL, NULL); - g_return_val_if_fail (length > 1, NULL); checksum = g_checksum_new (checksum_type); if (!checksum) diff --git a/tests/checksum-test.c b/tests/checksum-test.c index b5374b6..dc1a61e 100644 --- a/tests/checksum-test.c +++ b/tests/checksum-test.c @@ -617,11 +617,45 @@ test_checksum (GChecksumType checksum_type, } } +static void +test_checksum_string (GChecksumType checksum_type, + const gchar *type, + const gchar **sums) +{ + int length; + + for (length = 0; length <= FIXED_LEN; length++) + { + const char *expected = sums[length]; + char *checksum; + + checksum = g_compute_checksum_for_string (checksum_type, + FIXED_STR, + length); + if (strcmp (checksum, expected) != 0) + { + g_print ("Invalid %s checksum for `%.*s' (length %d):\n" + "%s (expecting: %s)\n", + type, + length, FIXED_STR, length, + checksum, + expected); + exit (1); + } + + g_free (checksum); + } +} + #define test(type, length) test_checksum (G_CHECKSUM_##type, \ #type, \ type##_sums[length], \ length) +#define test_string(type) test_checksum_string (G_CHECKSUM_##type, \ + #type, \ + type##_sums) + int main (int argc, char *argv[]) { @@ -634,5 +668,9 @@ main (int argc, char *argv[]) test (SHA256, length); } + test_string (MD5); + test_string (SHA1); + test_string (SHA256); + return EXIT_SUCCESS; } -- 2.7.4