Module Name: src Committed By: roy Date: Mon Jun 8 08:02:44 UTC 2015
Modified Files: src/sys/netinet: ip_output.c Log Message: It's possible we could not have any ready addresses. To generate a diff of this commit: cvs rdiff -u -r1.239 -r1.240 src/sys/netinet/ip_output.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/netinet/ip_output.c diff -u src/sys/netinet/ip_output.c:1.239 src/sys/netinet/ip_output.c:1.240 --- src/sys/netinet/ip_output.c:1.239 Thu Jun 4 09:20:00 2015 +++ src/sys/netinet/ip_output.c Mon Jun 8 08:02:43 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: ip_output.c,v 1.239 2015/06/04 09:20:00 ozaki-r Exp $ */ +/* $NetBSD: ip_output.c,v 1.240 2015/06/08 08:02:43 roy Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -91,7 +91,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ip_output.c,v 1.239 2015/06/04 09:20:00 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip_output.c,v 1.240 2015/06/08 08:02:43 roy Exp $"); #include "opt_inet.h" #include "opt_ipsec.h" @@ -503,6 +503,10 @@ ip_output(struct mbuf *m0, ...) xifa = &xia->ia_ifa; if (xifa->ifa_getifa != NULL) { xia = ifatoia((*xifa->ifa_getifa)(xifa, rdst)); + if (xia == NULL) { + errno = EADDRNOTAVAIL; + goto bad; + } } ip->ip_src = xia->ia_addr.sin_addr; } @@ -563,8 +567,13 @@ ip_output(struct mbuf *m0, ...) struct ifaddr *xifa; xifa = &ia->ia_ifa; - if (xifa->ifa_getifa != NULL) + if (xifa->ifa_getifa != NULL) { ia = ifatoia((*xifa->ifa_getifa)(xifa, rdst)); + if (ia == NULL) { + error = EADDRNOTAVAIL; + goto bad; + } + } ip->ip_src = ia->ia_addr.sin_addr; }