Module Name: src Committed By: riz Date: Sat May 19 17:07:50 UTC 2012
Modified Files: src/sys/netsmb [netbsd-4-0]: subr_mchain.c Log Message: Pull up following revision(s) (requested by nakayama in ticket #1445): 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.13.28.1 -r1.13.28.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.13.28.1 src/sys/netsmb/subr_mchain.c:1.13.28.2 --- src/sys/netsmb/subr_mchain.c:1.13.28.1 Thu Jul 22 20:34:16 2010 +++ src/sys/netsmb/subr_mchain.c Sat May 19 17:07:50 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: subr_mchain.c,v 1.13.28.1 2010/07/22 20:34:16 riz Exp $ */ +/* $NetBSD: subr_mchain.c,v 1.13.28.2 2012/05/19 17:07:50 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.13.28.1 2010/07/22 20:34:16 riz Exp $"); +__KERNEL_RCSID(0, "$NetBSD: subr_mchain.c,v 1.13.28.2 2012/05/19 17:07:50 riz Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -70,7 +70,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); @@ -92,7 +92,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)