Accept short data

svn path=/trunk/; revision=7625
This commit is contained in:
Matthias Clasen 2008-10-24 04:10:50 +00:00
parent b616e892ca
commit c6404e8329
3 changed files with 45 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2008-10-23 Matthias Clasen <mclasen@redhat.com>
* 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 <mclasen@redhat.com> 2008-10-23 Matthias Clasen <mclasen@redhat.com>
Bug 556921 gpoll.h breaks hal compilation Bug 556921 gpoll.h breaks hal compilation

View File

@ -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 (IS_VALID_TYPE (checksum_type), NULL);
g_return_val_if_fail (data != NULL, NULL); g_return_val_if_fail (data != NULL, NULL);
g_return_val_if_fail (length > 1, NULL);
checksum = g_checksum_new (checksum_type); checksum = g_checksum_new (checksum_type);
if (!checksum) if (!checksum)

View File

@ -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, \ #define test(type, length) test_checksum (G_CHECKSUM_##type, \
#type, \ #type, \
type##_sums[length], \ type##_sums[length], \
length) length)
#define test_string(type) test_checksum_string (G_CHECKSUM_##type, \
#type, \
type##_sums)
int int
main (int argc, char *argv[]) main (int argc, char *argv[])
{ {
@ -634,5 +668,9 @@ main (int argc, char *argv[])
test (SHA256, length); test (SHA256, length);
} }
test_string (MD5);
test_string (SHA1);
test_string (SHA256);
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }