libnm/crypto: fix uninitialized variable in crypto_md5_hash()

@digest_len passed to g_checksum_get_digest() must be
initialized to the size of the digest. It is an in-out paramter.

Fixes: 48ff21b5bc
This commit is contained in:
Thomas Haller 2014-12-04 16:17:18 +01:00
parent 9a6e1e86cc
commit 94af5e76bc

View file

@ -795,14 +795,17 @@ crypto_md5_hash (const char *salt,
g_checksum_reset (ctx);
if (count++)
g_checksum_update (ctx, (const guchar *) digest, digest_len);
g_checksum_update (ctx, (const guchar *) digest, sizeof (digest));
if (password_len > 0)
g_checksum_update (ctx, (const guchar *) password, password_len);
if (salt_len > 0)
g_checksum_update (ctx, (const guchar *) salt, salt_len);
g_checksum_get_digest (ctx, (guchar *) digest, &digest_len);
while (nkey && (i < digest_len)) {
digest_len = sizeof (digest);
g_checksum_get_digest (ctx, (guchar *) digest, &digest_len);
g_assert (digest_len == sizeof (digest));
while (nkey && (i < sizeof (digest))) {
*(p++) = digest[i++];
nkey--;
}