From owner-cvs-all Fri Jan 5 8:30:20 2001 From owner-cvs-all@FreeBSD.ORG Fri Jan 5 08:30:09 2001 Return-Path: Delivered-To: cvs-all@freebsd.org Received: from scientia.demon.co.uk (scientia.demon.co.uk [212.228.14.13]) by hub.freebsd.org (Postfix) with ESMTP id 3DB3F37B400; Fri, 5 Jan 2001 08:30:03 -0800 (PST) Received: from strontium.scientia.demon.co.uk ([192.168.91.36] ident=root) by scientia.demon.co.uk with esmtp (Exim 3.20 #1) id 14EZjy-0003fl-00; Fri, 05 Jan 2001 16:29:18 +0000 Received: (from ben@localhost) by strontium.scientia.demon.co.uk (8.11.1/8.11.1) id f05GTHG21641; Fri, 5 Jan 2001 16:29:17 GMT (envelope-from ben) Date: Fri, 5 Jan 2001 16:29:17 +0000 From: Ben Smithurst To: Brian Somers Cc: Chris Faulhaber , Will Andrews , cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/usr.bin/apply apply.c Message-ID: <20010105162917.K85794@strontium.scientia.demon.co.uk> References: <200101050206.f0526rB87964@hak.lan.Awfulhak.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <200101050206.f0526rB87964@hak.lan.Awfulhak.org> Sender: ben@scientia.demon.co.uk Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG Brian Somers wrote: > Also (and this bug was already there), s[n]printf() returns the length > of what it would have liked to have put in the target, not what it > actually wrote. If the first s[n]printf() above ends up truncating, > the second one will happily overflow. Well, with sprintf, there is no difference, since it doesn't have a size limitation like snprintf does. > s[n]printf() is poorly documented in this area. Would this change make you feel better? change this: Snprintf() and vsnprintf() will write at most size-1 of the characters printed into the output string (the size'th character then gets the ter- minating `\0'); if the return value is greater than or equal to the size argument, the string was too short and some of the printed characters were discarded. to this: Snprintf() and vsnprintf() will write at most size-1 of the characters printed into the output string (the size'th character then gets the ter- minating `\0'), and return the number of characters written to the buffer, excluding the terminating `\0'. This value may be less than the number of characters which would have been written, had the buffer been large enough; if the return value is greater than or equal to the size argument, the string was too short and some of the printed characters were discarded. -- Ben Smithurst / ben@FreeBSD.org / PGP: 0x99392F7D To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message