Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/sys/netinet/udp_usrreq.c,v rcsdiff: /ftp/cvs/cvsroot/src/sys/netinet/udp_usrreq.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.134.2.5 retrieving revision 1.137 diff -u -p -r1.134.2.5 -r1.137 --- src/sys/netinet/udp_usrreq.c 2005/09/08 21:10:24 1.134.2.5 +++ src/sys/netinet/udp_usrreq.c 2005/04/25 20:37:06 1.137 @@ -1,4 +1,4 @@ -/* $NetBSD: udp_usrreq.c,v 1.134.2.5 2005/09/08 21:10:24 tron Exp $ */ +/* $NetBSD: udp_usrreq.c,v 1.137 2005/04/25 20:37:06 manu Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -61,7 +61,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: udp_usrreq.c,v 1.134.2.5 2005/09/08 21:10:24 tron Exp $"); +__KERNEL_RCSID(0, "$NetBSD: udp_usrreq.c,v 1.137 2005/04/25 20:37:06 manu Exp $"); #include "opt_inet.h" #include "opt_ipsec.h" @@ -1400,10 +1400,10 @@ udp4_espinudp(m, off, src, so) } if (inp->inp_flags & INP_ESPINUDP_NON_IKE) { - u_int32_t *st = (u_int32_t *)data; + u_int64_t *st = (u_int64_t *)data; if ((len <= sizeof(u_int64_t) + sizeof(struct esp)) - || ((st[0] | st[1]) != 0)) + || (*st != 0)) return 0; /* Normal UDP processing */ skip = sizeof(struct udphdr) + sizeof(u_int64_t); @@ -1459,7 +1459,6 @@ udp4_espinudp(m, off, src, so) if ((tag = m_tag_get(PACKET_TAG_IPSEC_NAT_T_PORTS, sizeof(sport) + sizeof(dport), M_DONTWAIT)) == NULL) { printf("udp4_espinudp: m_tag_get failed\n"); - m_freem(n); return 0; } ((u_int16_t *)(tag + 1))[0] = sport;