Module Name: src Committed By: riz Date: Sat May 19 17:03:09 UTC 2012
Modified Files: src/sys/netsmb [netbsd-5]: subr_mchain.c Log Message: Pull up following revision(s) (requested by nakayama in ticket #1758): sys/netsmb/subr_mchain.c: revision 1.21 Since "len" has changed to (unsinged) size_t, the while loop condition (len > 0) became less able to detect its underflow. So check the subtrahend to avoid the underflow. Should fix PR kern/44092. To generate a diff of this commit: cvs rdiff -u -r1.15.6.1 -r1.15.6.2 src/sys/netsmb/subr_mchain.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/netsmb/subr_mchain.c diff -u src/sys/netsmb/subr_mchain.c:1.15.6.1 src/sys/netsmb/subr_mchain.c:1.15.6.2 --- src/sys/netsmb/subr_mchain.c:1.15.6.1 Fri Jul 16 18:47:10 2010 +++ src/sys/netsmb/subr_mchain.c Sat May 19 17:03:09 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: subr_mchain.c,v 1.15.6.1 2010/07/16 18:47:10 riz Exp $ */ +/* $NetBSD: subr_mchain.c,v 1.15.6.2 2012/05/19 17:03:09 riz Exp $ */ /* * Copyright (c) 2000, 2001 Boris Popov @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: subr_mchain.c,v 1.15.6.1 2010/07/16 18:47:10 riz Exp $"); +__KERNEL_RCSID(0, "$NetBSD: subr_mchain.c,v 1.15.6.2 2012/05/19 17:03:09 riz Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -67,7 +67,7 @@ m_getm(struct mbuf *m, size_t len, int h } } mp->m_len = 0; - len -= M_TRAILINGSPACE(mp); + len -= min(len, M_TRAILINGSPACE(mp)); if (m != NULL) for (mtail = m; mtail->m_next != NULL; mtail = mtail->m_next); @@ -89,7 +89,7 @@ m_getm(struct mbuf *m, size_t len, int h } mp->m_len = 0; - len -= M_TRAILINGSPACE(mp); + len -= min(len, M_TRAILINGSPACE(mp)); } if (mtail != NULL)