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; }