Module Name: src Committed By: christos Date: Fri Nov 20 02:14:57 UTC 2009
Modified Files: src/sys/net: if_arcsubr.c if_ecosubr.c if_ethersubr.c if_fddisubr.c if_tokensubr.c src/sys/netinet: if_arp.c Log Message: ar_tha() can return NULL; treat this as an error. To generate a diff of this commit: cvs rdiff -u -r1.60 -r1.61 src/sys/net/if_arcsubr.c cvs rdiff -u -r1.32 -r1.33 src/sys/net/if_ecosubr.c cvs rdiff -u -r1.172 -r1.173 src/sys/net/if_ethersubr.c cvs rdiff -u -r1.77 -r1.78 src/sys/net/if_fddisubr.c cvs rdiff -u -r1.57 -r1.58 src/sys/net/if_tokensubr.c cvs rdiff -u -r1.148 -r1.149 src/sys/netinet/if_arp.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/net/if_arcsubr.c diff -u src/sys/net/if_arcsubr.c:1.60 src/sys/net/if_arcsubr.c:1.61 --- src/sys/net/if_arcsubr.c:1.60 Thu Nov 6 19:20:13 2008 +++ src/sys/net/if_arcsubr.c Thu Nov 19 21:14:56 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: if_arcsubr.c,v 1.60 2008/11/07 00:20:13 dyoung Exp $ */ +/* $NetBSD: if_arcsubr.c,v 1.61 2009/11/20 02:14:56 christos Exp $ */ /* * Copyright (c) 1994, 1995 Ignatios Souvatzis @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_arcsubr.c,v 1.60 2008/11/07 00:20:13 dyoung Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_arcsubr.c,v 1.61 2009/11/20 02:14:56 christos Exp $"); #include "opt_inet.h" @@ -197,8 +197,12 @@ arph = mtod(m, struct arphdr *); if (m->m_flags & M_BCAST) adst = arcbroadcastaddr; - else - adst = *ar_tha(arph); + else { + uint8_t *tha = ar_tha(arph); + if (tha == NULL) + return 0; + adst = *tha; + } arph->ar_hrd = htons(ARPHRD_ARCNET); Index: src/sys/net/if_ecosubr.c diff -u src/sys/net/if_ecosubr.c:1.32 src/sys/net/if_ecosubr.c:1.33 --- src/sys/net/if_ecosubr.c:1.32 Wed Mar 18 12:00:22 2009 +++ src/sys/net/if_ecosubr.c Thu Nov 19 21:14:56 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: if_ecosubr.c,v 1.32 2009/03/18 16:00:22 cegger Exp $ */ +/* $NetBSD: if_ecosubr.c,v 1.33 2009/11/20 02:14:56 christos Exp $ */ /*- * Copyright (c) 2001 Ben Harris @@ -58,7 +58,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_ecosubr.c,v 1.32 2009/03/18 16:00:22 cegger Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_ecosubr.c,v 1.33 2009/11/20 02:14:56 christos Exp $"); #include "bpfilter.h" #include "opt_inet.h" @@ -265,7 +265,8 @@ ECO_ADDR_LEN); else { tha = ar_tha(ah); - KASSERT(tha != NULL); + if (tha == NULL) + return 0; memcpy(ehdr.eco_dhost, tha, ECO_ADDR_LEN); } Index: src/sys/net/if_ethersubr.c diff -u src/sys/net/if_ethersubr.c:1.172 src/sys/net/if_ethersubr.c:1.173 --- src/sys/net/if_ethersubr.c:1.172 Fri May 29 00:57:04 2009 +++ src/sys/net/if_ethersubr.c Thu Nov 19 21:14:56 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: if_ethersubr.c,v 1.172 2009/05/29 04:57:04 darran Exp $ */ +/* $NetBSD: if_ethersubr.c,v 1.173 2009/11/20 02:14:56 christos Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -61,7 +61,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_ethersubr.c,v 1.172 2009/05/29 04:57:04 darran Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_ethersubr.c,v 1.173 2009/11/20 02:14:56 christos Exp $"); #include "opt_inet.h" #include "opt_atalk.h" @@ -301,7 +301,10 @@ else { void *tha = ar_tha(ah); - KASSERT(tha); + if (tha == NULL) { + /* fake with ARPHDR_IEEE1394 */ + return 0; + } memcpy(edst, tha, sizeof(edst)); } Index: src/sys/net/if_fddisubr.c diff -u src/sys/net/if_fddisubr.c:1.77 src/sys/net/if_fddisubr.c:1.78 --- src/sys/net/if_fddisubr.c:1.77 Thu Nov 6 19:20:13 2008 +++ src/sys/net/if_fddisubr.c Thu Nov 19 21:14:56 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: if_fddisubr.c,v 1.77 2008/11/07 00:20:13 dyoung Exp $ */ +/* $NetBSD: if_fddisubr.c,v 1.78 2009/11/20 02:14:56 christos Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -96,7 +96,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_fddisubr.c,v 1.77 2008/11/07 00:20:13 dyoung Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_fddisubr.c,v 1.78 2009/11/20 02:14:56 christos Exp $"); #include "opt_inet.h" #include "opt_atalk.h" @@ -306,8 +306,8 @@ memcpy(edst, etherbroadcastaddr, sizeof(edst)); else { void *tha = ar_tha(ah); - - KASSERT(tha); + if (tha == NULL) + return 0; memcpy(edst, tha, sizeof(edst)); } Index: src/sys/net/if_tokensubr.c diff -u src/sys/net/if_tokensubr.c:1.57 src/sys/net/if_tokensubr.c:1.58 --- src/sys/net/if_tokensubr.c:1.57 Sat Apr 18 10:58:05 2009 +++ src/sys/net/if_tokensubr.c Thu Nov 19 21:14:57 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: if_tokensubr.c,v 1.57 2009/04/18 14:58:05 tsutsui Exp $ */ +/* $NetBSD: if_tokensubr.c,v 1.58 2009/11/20 02:14:57 christos Exp $ */ /* * Copyright (c) 1982, 1989, 1993 @@ -92,7 +92,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_tokensubr.c,v 1.57 2009/04/18 14:58:05 tsutsui Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_tokensubr.c,v 1.58 2009/11/20 02:14:57 christos Exp $"); #include "opt_inet.h" #include "opt_atalk.h" @@ -308,10 +308,10 @@ memcpy(edst, tokenbroadcastaddr, sizeof(edst)); } else { - void *tha = (void *)ar_tha(ah); - KASSERT(tha); - if (tha) - memcpy((void *)edst, tha, sizeof(edst)); + void *tha = ar_tha(ah); + if (tha == NULL) + return 0; + memcpy(edst, tha, sizeof(edst)); trh = (struct token_header *)M_TRHSTART(m); trh->token_ac = TOKEN_AC; trh->token_fc = TOKEN_FC; Index: src/sys/netinet/if_arp.c diff -u src/sys/netinet/if_arp.c:1.148 src/sys/netinet/if_arp.c:1.149 --- src/sys/netinet/if_arp.c:1.148 Mon Nov 2 19:57:42 2009 +++ src/sys/netinet/if_arp.c Thu Nov 19 21:14:57 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: if_arp.c,v 1.148 2009/11/03 00:57:42 christos Exp $ */ +/* $NetBSD: if_arp.c,v 1.149 2009/11/20 02:14:57 christos Exp $ */ /*- * Copyright (c) 1998, 2000, 2008 The NetBSD Foundation, Inc. @@ -68,7 +68,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_arp.c,v 1.148 2009/11/03 00:57:42 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_arp.c,v 1.149 2009/11/20 02:14:57 christos Exp $"); #include "opt_ddb.h" #include "opt_inet.h" @@ -1403,7 +1403,8 @@ if (myip_initialized) goto wake; tha = ar_tha(ah); - KASSERT(tha); + if (tha == NULL) + goto out; if (memcmp(tha, CLLADDR(ifp->if_sadl), ifp->if_sadl->sdl_alen)) goto out; memcpy(&srv_ip, ar_spa(ah), sizeof(srv_ip)); @@ -1444,7 +1445,8 @@ memcpy(ar_sha(ah), CLLADDR(ifp->if_sadl), ah->ar_hln); tha = ar_tha(ah); - KASSERT(tha); + if (tha == NULL) + return; memcpy(tha, CLLADDR(ifp->if_sadl), ah->ar_hln); sa.sa_family = AF_ARP;