From owner-svn-src-head@freebsd.org Sun Apr 2 17:59:21 2017 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5D61ED2B0EA; Sun, 2 Apr 2017 17:59:21 +0000 (UTC) (envelope-from allanjude@freebsd.org) Received: from mx1.scaleengine.net (mx1.scaleengine.net [209.51.186.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 40BD4B4E; Sun, 2 Apr 2017 17:59:20 +0000 (UTC) (envelope-from allanjude@freebsd.org) Received: from [10.1.1.2] (unknown [10.1.1.2]) (Authenticated sender: allanjude.freebsd@scaleengine.com) by mx1.scaleengine.net (Postfix) with ESMTPSA id 0ECA113432; Sun, 2 Apr 2017 17:59:19 +0000 (UTC) Subject: Re: svn commit: r316393 - head/sys/compat/linux To: Konstantin Belousov , Dmitry Chagin References: <201704020746.v327kDSN042840@repo.freebsd.org> <20170402133651.GJ43712@kib.kiev.ua> Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org From: Allan Jude Message-ID: Date: Sun, 2 Apr 2017 13:59:10 -0400 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <20170402133651.GJ43712@kib.kiev.ua> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 02 Apr 2017 17:59:21 -0000 On 2017-04-02 09:36, Konstantin Belousov wrote: > On Sun, Apr 02, 2017 at 07:46:13AM +0000, Dmitry Chagin wrote: >> Author: dchagin >> Date: Sun Apr 2 07:46:13 2017 >> New Revision: 316393 >> URL: https://svnweb.freebsd.org/changeset/base/316393 >> >> Log: >> As noted by bde@ negative tv_sec values are not checked for overflow, >> so overflow can still occur. Fix that. Also remove the extra check for >> tv_sec size as under COMPAT_LINUX32 it is always true. >> >> Pointed out by: bde@ >> >> MFC after: 1 week >> >> Modified: >> head/sys/compat/linux/linux_time.c >> >> Modified: head/sys/compat/linux/linux_time.c >> ============================================================================== >> --- head/sys/compat/linux/linux_time.c Sun Apr 2 07:11:15 2017 (r316392) >> +++ head/sys/compat/linux/linux_time.c Sun Apr 2 07:46:13 2017 (r316393) >> @@ -125,8 +125,7 @@ native_to_linux_timespec(struct l_timesp >> >> LIN_SDT_PROBE2(time, native_to_linux_timespec, entry, ltp, ntp); >> #ifdef COMPAT_LINUX32 >> - if (ntp->tv_sec > INT_MAX && >> - sizeof(ltp->tv_sec) != sizeof(ntp->tv_sec)) >> + if (ntp->tv_sec > INT_MAX || ntp->tv_sec < INT_MIN) > This line reads as only tv_sec == INT_MAX case results in non-EOVERFLOW > condition. > >> return (EOVERFLOW); >> #endif >> ltp->tv_sec = ntp->tv_sec; > It is possible kib@ did what I did, which was read both sides of the or as comparing against INT_MAX at first glance, rather than the 2nd one being INT_MIN. -- Allan Jude