From owner-freebsd-stable@FreeBSD.ORG Sun Feb 1 13:11:39 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 3F323A30 for ; Sun, 1 Feb 2015 13:11:39 +0000 (UTC) Received: from alogt.com (alogt.com [69.36.191.58]) (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 1A408305 for ; Sun, 1 Feb 2015 13:11:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=alogt.com; s=default; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Subject:Cc:To:From:Date; bh=ra2ZMYl5KkYGpDzgFIwUJkqi/l0TRHrLaUhE/yGwZ/w=; b=ep75962kuqb3rpEnuhdIGfu/iAHHbp9MCMFW2n+x4eUVaIOvYVvlWYLg39pcHX4TZzVSB3OtSvNpmHOktB/UQzktsFNqZKkUTVTvJ4OVsSmFF3dDcBdvTPGonr0/QShubx60PC1/ItAjC/b64kwGXRPg5ghw/qp5qdbZs7CHdD4=; Received: from [114.121.161.125] (port=42781 helo=B85M-HD3-0.alogt.com) by sl-508-2.slc.westdc.net with esmtpsa (TLSv1.2:AES128-GCM-SHA256:128) (Exim 4.84) (envelope-from ) id 1YHuJL-002fFS-Tw; Sun, 01 Feb 2015 06:11:37 -0700 Date: Sun, 1 Feb 2015 21:11:25 +0800 From: Erich Dollansky To: Paul Koch Subject: Re: top, fixed buffer length in utils.c Message-ID: <20150201211125.2fb21c39@B85M-HD3-0.alogt.com> In-Reply-To: <20150201195722.68845794@akips.com> References: <20150201175159.7fa88d16@B85M-HD3-0.alogt.com> <20150201195722.68845794@akips.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - sl-508-2.slc.westdc.net X-AntiAbuse: Original Domain - freebsd.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - alogt.com X-Get-Message-Sender-Via: sl-508-2.slc.westdc.net: authenticated_id: erichsfreebsdlist@alogt.com X-Source: X-Source-Args: X-Source-Dir: 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: Sun, 01 Feb 2015 13:11:39 -0000 Hi, On Sun, 1 Feb 2015 19:57:22 +1000 Paul Koch wrote: > On Sun, 1 Feb 2015 17:51:59 +0800 > Erich Dollansky wrote: > > > Hi, > > > > I came across this here in utils.c which is part of top: > > > > > > /* > > * How do we know that 16 will suffice? > > * Because the biggest number that we > > will > > * ever convert will be 2^32-1, which > > is 10 > > * digits. > > */ > > > > char *itoa(val) > > > > register int val; > > > > 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? > > > > Erich > > I thought an 'int' was a 32bit number on amd64 arch. the problem is that top is not a x86 only program but should work on all platforms. Leaving this like it is might will cause problems when int becomes more than 32 bits wide. Of course, if it is known that the value to be converted will always be within 32 bits, it is not a problem to do it as it is done. > > > #include > #include > > int > main (void) > { > printf ("%zd\n", sizeof (int)); > exit (0); > } > Yes, this is the reason why it works on 32 bit platforms and also on amd64. Erich