From owner-freebsd-stable@FreeBSD.ORG Wed Feb 4 18:35:51 2015 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9B67546F for ; Wed, 4 Feb 2015 18:35:51 +0000 (UTC) Received: from gold.funkthat.com (gate2.funkthat.com [208.87.223.18]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "gold.funkthat.com", Issuer "gold.funkthat.com" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 75C1715F for ; Wed, 4 Feb 2015 18:35:50 +0000 (UTC) Received: from gold.funkthat.com (localhost [127.0.0.1]) by gold.funkthat.com (8.14.5/8.14.5) with ESMTP id t14IZmId032206 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 4 Feb 2015 10:35:48 -0800 (PST) (envelope-from jmg@gold.funkthat.com) Received: (from jmg@localhost) by gold.funkthat.com (8.14.5/8.14.5/Submit) id t14IZmsV032205; Wed, 4 Feb 2015 10:35:48 -0800 (PST) (envelope-from jmg) Date: Wed, 4 Feb 2015 10:35:48 -0800 From: John-Mark Gurney To: Erich Dollansky Subject: Re: top, fixed buffer length in utils.c Message-ID: <20150204183548.GA27763@funkthat.com> References: <20150201175159.7fa88d16@B85M-HD3-0.alogt.com> <20150203003307.GG27103@funkthat.com> <20150203200135.57c8c236@B85M-HD3-0.alogt.com> <20150204074235.GX27103@funkthat.com> <20150204170947.17764dff@B85M-HD3-0.alogt.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150204170947.17764dff@B85M-HD3-0.alogt.com> X-Operating-System: FreeBSD 9.1-PRERELEASE amd64 X-PGP-Fingerprint: 54BA 873B 6515 3F10 9E88 9322 9CB1 8F74 6D3F A396 X-Files: The truth is out there X-URL: http://resnet.uoregon.edu/~gurney_j/ X-Resume: http://resnet.uoregon.edu/~gurney_j/resume.html X-TipJar: bitcoin:13Qmb6AeTgQecazTWph4XasEsP7nGRbAPE X-to-the-FBI-CIA-and-NSA: HI! HOW YA DOIN? can i haz chizburger? User-Agent: Mutt/1.5.21 (2010-09-15) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (gold.funkthat.com [127.0.0.1]); Wed, 04 Feb 2015 10:35:48 -0800 (PST) Cc: freebsd-stable@freebsd.org X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Feb 2015 18:35:51 -0000 Erich Dollansky wrote this message on Wed, Feb 04, 2015 at 17:09 +0800: > Hi, > > On Tue, 3 Feb 2015 23:42:35 -0800 > John-Mark Gurney wrote: > > > Erich Dollansky wrote this message on Tue, Feb 03, 2015 at 20:01 > > +0800: > > > On Mon, 2 Feb 2015 16:33:07 -0800 > > > John-Mark Gurney wrote: > > > > > > > Erich Dollansky wrote this message on Sun, Feb 01, 2015 at 17:51 > > > > +0800: > > > > > int can be 64 bits on a amd64 machine. Why is the author of this > > > > > code so sure that we will never cross the 32 bit boundary? > > > > > > > > Per others, int is currently 32bits on all platforms we support... > > > > > > > > I guess adding: > > > > CTASSERT(sizeof(int) <= 4); > > > > > > > > would help fix your concern? at least now the expectation is > > > > codified and if it breaks, the build will break.. > > > > > > > of course. Either avoid the run-time problem or get an error message > > > and things cannot create hidden problem. > > > > Ok, I've generated this patch: > > Index: utils.c > > =================================================================== > > --- utils.c (revision 277938) > > +++ utils.c (working copy) > > @@ -58,6 +58,7 @@ char *str; > > * ever convert will be 2^32-1, > > which is 10 > > * digits. > > */ > > +_Static_assert(sizeof(int) <= 4, "buffer too small for this sized > > int"); > > char *itoa(val) > > > Wait, shouldn't it the other way around? It will break when sizeof > (int) is greater than 4? No, asserts trigger when the statement is false... I verified this by changing 4 to 2 and seeing that it failed (triggered) to compile... > > I couldn't use CTASSERT because including sys/param.h and sys/systm.h > > per man page didn't work.. apparently for userland it's different and > > requires additional headers... It appears that we define it in > > sys/cdefs.h which gets included, so this work for both clang and > > gcc... > > > > I'll commit it soon unless someone objects... > > > Thanks! > > Erich -- John-Mark Gurney Voice: +1 415 225 5579 "All that I will do, has been done, All that I have, has not."