Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 5 Jan 2001 16:29:17 +0000
From:      Ben Smithurst <ben@FreeBSD.org>
To:        Brian Somers <brian@Awfulhak.org>
Cc:        Chris Faulhaber <jedgar@fxp.org>, Will Andrews <will@FreeBSD.org>, 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>
In-Reply-To: <200101050206.f0526rB87964@hak.lan.Awfulhak.org>
References:  <jedgar@fxp.org> <200101050206.f0526rB87964@hak.lan.Awfulhak.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010105162917.K85794>