Module Name:    src
Committed By:   christos
Date:           Mon Sep  7 18:37:21 UTC 2020

Modified Files:
        src/usr.sbin/mrouted: defs.h inet.c

Log Message:
change cksum prototype to const void *, and check alignment via assertion.


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/usr.sbin/mrouted/defs.h
cvs rdiff -u -r1.12 -r1.13 src/usr.sbin/mrouted/inet.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.sbin/mrouted/defs.h
diff -u src/usr.sbin/mrouted/defs.h:1.15 src/usr.sbin/mrouted/defs.h:1.16
--- src/usr.sbin/mrouted/defs.h:1.15	Tue Feb 22 20:23:03 2011
+++ src/usr.sbin/mrouted/defs.h	Mon Sep  7 14:37:21 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: defs.h,v 1.15 2011/02/23 01:23:03 dyoung Exp $	*/
+/*	$NetBSD: defs.h,v 1.16 2020/09/07 18:37:21 christos Exp $	*/
 
 /*
  * The mrouted program is covered by the license in the accompanying file
@@ -223,7 +223,7 @@ extern int		inet_valid_subnet(u_int32_t 
 extern char *		inet_fmt(u_int32_t addr);
 extern char *		inet_fmts(u_int32_t addr, u_int32_t mask);
 extern u_int32_t	inet_parse(char *s, int *);
-extern int		inet_cksum(u_short *addr, u_int len);
+extern int		inet_cksum(const void *addr, u_int len);
 
 /* prune.c */
 extern unsigned		kroutes;

Index: src/usr.sbin/mrouted/inet.c
diff -u src/usr.sbin/mrouted/inet.c:1.12 src/usr.sbin/mrouted/inet.c:1.13
--- src/usr.sbin/mrouted/inet.c:1.12	Sat May 17 05:39:04 2003
+++ src/usr.sbin/mrouted/inet.c	Mon Sep  7 14:37:21 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: inet.c,v 1.12 2003/05/17 09:39:04 dsl Exp $	*/
+/*	$NetBSD: inet.c,v 1.13 2020/09/07 18:37:21 christos Exp $	*/
 
 /*
  * The mrouted program is covered by the license in the accompanying file
@@ -9,7 +9,7 @@
  * Leland Stanford Junior University.
  */
 
-
+#include <assert.h>
 #include "defs.h"
 
 
@@ -196,16 +196,18 @@ inet_parse(char *s, int *mask_p)
  *
  */
 int
-inet_cksum(u_int16_t *addr, u_int len)
+inet_cksum(const void *addr, u_int len)
 {
 	int nleft = (int)len;
-	u_int16_t *w = addr;
+	const u_int16_t *w = addr;
 	int32_t sum = 0;
 	union {
 		u_int16_t w;
 		u_int8_t b[2];
 	} answer;
 
+	assert(((uintptr_t)w & 1) == 0);
+
 	/*
 	 *  Our algorithm is simple, using a 32 bit accumulator (sum),
 	 *  we add sequential 16 bit words to it, and at the end, fold
@@ -220,7 +222,7 @@ inet_cksum(u_int16_t *addr, u_int len)
 	/* mop up an odd byte, if necessary */
 	if (nleft == 1) {
 		answer.w = 0;
-		answer.b[0] = *(u_char *)w ;
+		answer.b[0] = *(const u_char *)w;
 		sum += answer.w;
 	}
 

Reply via email to