From: Matthew Wilcox <willy@debian.org>
To: Andries Brouwer <aebr@win.tue.nl>
Cc: Petr Vandrovec <vandrove@vc.cvut.cz>,
John Belmonte <jvb@prairienet.org>,
Ben Collins <bcollins@debian.org>,
Linus Torvalds <torvalds@osdl.org>,
linux-kernel@vger.kernel.org, acpi-devel@lists.sourceforge.net,
Michael Wawrzyniak <gan@planetlaz.com>
Subject: Re: [ACPI] Re: [PATCH] bad strlcpy conversion breaks toshiba_acpi
Date: Sun, 27 Jul 2003 22:02:03 +0100 [thread overview]
Message-ID: <20030727210203.GU1485@parcelfarce.linux.theplanet.co.uk> (raw)
In-Reply-To: <20030725165709.GA670@win.tue.nl>
On Fri, Jul 25, 2003 at 06:57:09PM +0200, Andries Brouwer wrote:
> strlcpy is for strings, not for character arrays.
> The *BSD version accesses the source past the size-1 characters that are copied:
> while (*s++)
> ;
> Thus, replacing strncpy (used to copy character arrays, possibly not 0-terminated)
> by strlcpy is wrong.
But using strncpy() is _also_ wrong because of its NUL-padding behaviour.
There's really four different situations and strncpy is only suitable
for one of them:
a) Copy at most n bytes of a string to another string (strlcpy)
b) Copy at most n bytes from a character array into a string (strncat?)
c) Copy at most n bytes from a string to a character array that will
be returned to user space (strncpy)
d) Copy n bytes from one character array to another (memcpy)
stpcpy is another interesting variant on the awful strcpy, but we'd need
a stpncpy too. strncat is a little dubious for case (b) since you need
to initialise the dest with a NUL in the first byte.
C's string handling sucks, and everybody knows it. Making strings a first
class object may be a cure worse than the disease (for the intended use
of C; for scripting languages it makes perfect sense).
--
"It's not Hollywood. War is real, war is primarily not about defeat or
victory, it is about death. I've seen thousands and thousands of dead bodies.
Do you think I want to have an academic debate on this subject?" -- Robert Fisk
next prev parent reply other threads:[~2003-07-28 1:17 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-07-25 14:46 [PATCH] bad strlcpy conversion breaks toshiba_acpi John Belmonte
2003-07-25 16:15 ` Petr Vandrovec
2003-07-25 16:57 ` Andries Brouwer
2003-07-27 21:02 ` Matthew Wilcox [this message]
2003-07-27 21:26 ` [ACPI] " M. Warner Losh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20030727210203.GU1485@parcelfarce.linux.theplanet.co.uk \
--to=willy@debian.org \
--cc=acpi-devel@lists.sourceforge.net \
--cc=aebr@win.tue.nl \
--cc=bcollins@debian.org \
--cc=gan@planetlaz.com \
--cc=jvb@prairienet.org \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@osdl.org \
--cc=vandrove@vc.cvut.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).