Author: kib Date: Fri Mar 20 11:08:57 2009 New Revision: 190145 URL: http://svn.freebsd.org/changeset/base/190145
Log: Do not underflow the buffer and then report the problem. Check for the condition before the buffer write. Also, since buflen is unsigned, previous check was ignored. Reviewed by: marcus Tested by: pho Modified: head/sys/kern/vfs_cache.c Modified: head/sys/kern/vfs_cache.c ============================================================================== --- head/sys/kern/vfs_cache.c Fri Mar 20 11:03:55 2009 (r190144) +++ head/sys/kern/vfs_cache.c Fri Mar 20 11:08:57 2009 (r190145) @@ -970,13 +970,13 @@ vn_fullpath1(struct thread *td, struct v if (error) return (error); } - *--bp = '/'; - buflen--; - if (buflen < 0) { + if (buflen <= 0) { numfullpathfail4++; CACHE_RUNLOCK(); return (ENOMEM); } + *--bp = '/'; + buflen--; slash_prefixed = 1; } while (vp != rdir && vp != rootvnode) { @@ -1013,14 +1013,14 @@ vn_fullpath1(struct thread *td, struct v if (error) break; } - *--bp = '/'; - buflen--; - if (buflen < 0) { + if (buflen <= 0) { numfullpathfail4++; CACHE_RUNLOCK(); error = ENOMEM; break; } + *--bp = '/'; + buflen--; slash_prefixed = 1; } if (error) _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"