Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/fs/efs fix unaligned access
details: https://anonhg.NetBSD.org/src/rev/da459db98341
branches: trunk
changeset: 938341:da459db98341
user: christos <christos%NetBSD.org@localhost>
date: Mon Sep 07 00:11:47 2020 +0000
description:
fix unaligned access
diffstat:
sys/fs/efs/efs_subr.c | 12 +++++++-----
1 files changed, 7 insertions(+), 5 deletions(-)
diffs (36 lines):
diff -r 1ad3ee50b4f7 -r da459db98341 sys/fs/efs/efs_subr.c
--- a/sys/fs/efs/efs_subr.c Sun Sep 06 23:23:21 2020 +0000
+++ b/sys/fs/efs/efs_subr.c Mon Sep 07 00:11:47 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: efs_subr.c,v 1.12 2015/09/26 12:16:28 maxv Exp $ */
+/* $NetBSD: efs_subr.c,v 1.13 2020/09/07 00:11:47 christos Exp $ */
/*
* Copyright (c) 2006 Stephen M. Rumble <rumble%ephemeral.org@localhost>
@@ -17,7 +17,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: efs_subr.c,v 1.12 2015/09/26 12:16:28 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: efs_subr.c,v 1.13 2020/09/07 00:11:47 christos Exp $");
#include <sys/param.h>
#include <sys/kauth.h>
@@ -63,12 +63,14 @@
{
int i;
int32_t cksum;
- uint16_t *sbarray = (uint16_t *)esb;
+ uint8_t *sbarray = (uint8_t *)esb;
KASSERT((EFS_SB_CHECKSUM_SIZE % 2) == 0);
- for (i = cksum = 0; i < (EFS_SB_CHECKSUM_SIZE / 2); i++) {
- cksum ^= be16toh(sbarray[i]);
+ for (i = cksum = 0; i < EFS_SB_CHECKSUM_SIZE; i += 2) {
+ uint16_t v;
+ memcpy(&v, &sbarray[i], sizeof(v));
+ cksum ^= be16toh(v);
cksum = (cksum << 1) | (new && cksum < 0);
}
Home |
Main Index |
Thread Index |
Old Index