Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/common/lib/libc/hash/sha2 Fix unaligned access in *_Final fo...
details: https://anonhg.NetBSD.org/src/rev/d277408371ba
branches: trunk
changeset: 751103:d277408371ba
user: joerg <joerg%NetBSD.org@localhost>
date: Sun Jan 24 21:11:18 2010 +0000
description:
Fix unaligned access in *_Final for SHA224/SHA256/SHA384.
Remaining part of PR 42273. Tested by snj.
diffstat:
common/lib/libc/hash/sha2/sha2.c | 12 +++++-------
1 files changed, 5 insertions(+), 7 deletions(-)
diffs (61 lines):
diff -r 794df03b0ba0 -r d277408371ba common/lib/libc/hash/sha2/sha2.c
--- a/common/lib/libc/hash/sha2/sha2.c Sun Jan 24 21:05:45 2010 +0000
+++ b/common/lib/libc/hash/sha2/sha2.c Sun Jan 24 21:11:18 2010 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: sha2.c,v 1.20 2009/11/06 20:31:18 joerg Exp $ */
+/* $NetBSD: sha2.c,v 1.21 2010/01/24 21:11:18 joerg Exp $ */
/* $KAME: sha2.c,v 1.9 2003/07/20 00:28:38 itojun Exp $ */
/*
@@ -43,7 +43,7 @@
#include <sys/cdefs.h>
#if defined(_KERNEL) || defined(_STANDALONE)
-__KERNEL_RCSID(0, "$NetBSD: sha2.c,v 1.20 2009/11/06 20:31:18 joerg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sha2.c,v 1.21 2010/01/24 21:11:18 joerg Exp $");
#include <sys/param.h> /* XXX: to pull <machine/macros.h> for vax memset(9) */
#include <lib/libkern/libkern.h>
@@ -51,7 +51,7 @@
#else
#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: sha2.c,v 1.20 2009/11/06 20:31:18 joerg Exp $");
+__RCSID("$NetBSD: sha2.c,v 1.21 2010/01/24 21:11:18 joerg Exp $");
#endif /* LIBC_SCCS and not lint */
#include "namespace.h"
@@ -555,7 +555,6 @@
static int
SHA224_256_Final(uint8_t digest[], SHA256_CTX *context, size_t len)
{
- uint32_t *d = (void *)digest;
unsigned int usedspace;
size_t i;
@@ -603,7 +602,7 @@
SHA256_Transform(context, (uint32_t *)(void *)context->buffer);
for (i = 0; i < len / 4; i++)
- d[i] = htobe32(context->state[i]);
+ be32enc(digest + 4 * i, context->state[i]);
}
/* Clean up state data: */
@@ -990,7 +989,6 @@
int
SHA384_Final(uint8_t digest[], SHA384_CTX *context)
{
- uint64_t *d = (void *)digest;
size_t i;
/* If no digest buffer is passed, we don't bother doing this: */
@@ -999,7 +997,7 @@
/* Save the hash data for output: */
for (i = 0; i < 6; ++i)
- d[i] = be64toh(context->state[i]);
+ be64enc(digest + 8 * i, context->state[i]);
}
/* Zero out state data */
Home |
Main Index |
Thread Index |
Old Index