Date: Mon, 15 Jul 2002 12:19:58 -0400 From: Mike Barcroft <mike@FreeBSD.org> To: "M. Warner Losh" <imp@bsdimp.com> Cc: keramida@FreeBSD.ORG, bde@zeta.org.au, des@ofug.org, freebsd-audit@FreeBSD.ORG Subject: Re: bin/ln & WARNS=5 Message-ID: <20020715121958.D64412@espresso.q9media.com> In-Reply-To: <20020715.090420.83279095.imp@bsdimp.com>; from imp@bsdimp.com on Mon, Jul 15, 2002 at 09:04:20AM -0600 References: <xzpele59w21.fsf@flood.ping.uio.no> <20020715202126.S40071-100000@gamplex.bde.org> <20020715111436.GD50130@hades.hell.gr> <20020715.090420.83279095.imp@bsdimp.com>
next in thread | previous in thread | raw e-mail | index | archive | help
M. Warner Losh <imp@bsdimp.com> writes:
> In message: <20020715111436.GD50130@hades.hell.gr>
> Giorgos Keramidas <keramida@FreeBSD.ORG> writes:
> : + if ((pathlen = snprintf(path, sizeof(path), "%s/%s",
> : + source, p)) == -1 || pathlen >= (int)sizeof(path)) {
>
> That's down right stupid.
>
> snprintf never returns a negative number. It always returns the
> number of characters that it would have used to make the string.
C99 standardized -1 as a possible return value for encoding errors.
I'm not sure why the return value is int and not ssize_t though
(probably because C99 doesn't have an ssize_t).
> The code was right before. However, maybe the following is better and
> clearer:
>
> if (strlen(source) + strlen(p) + 1 >= PATH_MAX) {
> ... ETOOLONG stuff
> }
> snprintf(...);
You might just as well use sprintf() at this point.
Best regards,
Mike Barcroft
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-audit" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020715121958.D64412>
