From: Dan Carpenter <error27@gmail.com>
To: Changli Gao <xiaosuo@gmail.com>
Cc: Karsten Keil <isdn@linux-pingi.de>,
netdev@vger.kernel.org, kernel-janitors@vger.kernel.org
Subject: Re: [patch] isdn: fix information leak
Date: Thu, 5 Aug 2010 13:37:37 +0200 [thread overview]
Message-ID: <20100805113721.GI9031@bicker> (raw)
In-Reply-To: <AANLkTi=8ThVqTHpQmDfoon02C-VZ0JwBRtSrU7dzvvNt@mail.gmail.com>
On Thu, Aug 05, 2010 at 07:02:06PM +0800, Changli Gao wrote:
>
> the second parameter of strlcpy() must a NUL terminated C string. I
> think you means strncpy().
>
Both strncpy() and strlcpy() take a limitter. The difference is that
strlcpy() always takes on a terminator and strncpy() only adds a
terminator if there is space.
strlcpy() is a BSD function that never caught on in Linux. The glibc
maintainers think that if you accidentally chop off the last part of a
word that makes you an idiot. They think you should known the length of
your data at all times and use memcpy() or a proper string library.
I prefer strlcpy() to strncpy(). Some people do stuff like:
strncpy(bar, foo, n);
bar[n] = '\0';
You have to read through the code to find if n is "sizeof(bar)" or
"sizeof(bar) - 1". Which is a pain in the arse. strlcpy() is explicit
and it's just one line of code instead of two.
The other tricky thing you should remember about strncpy() is that the
posix version writes NUL chars from the end of the string to the
limitter but the kernel version only copies one NUL character.
regards,
dan carpenter
> FYI:
> http://lxr.linux.no/#linux+v2.6.35/lib/string.c#L146
> http://lxr.linux.no/#linux+v2.6.35/lib/string.c#L119
>
next prev parent reply other threads:[~2010-08-05 11:37 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-05 9:38 [patch] isdn: fix information leak Dan Carpenter
2010-08-05 10:08 ` Changli Gao
2010-08-05 10:19 ` Dan Carpenter
2010-08-05 11:02 ` Changli Gao
2010-08-05 11:37 ` Dan Carpenter [this message]
2010-08-05 13:18 ` Changli Gao
2010-08-05 13:24 ` Changli Gao
2010-08-05 13:55 ` Dan Carpenter
2010-08-05 13:59 ` Changli Gao
2010-08-05 20:21 ` David Miller
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=20100805113721.GI9031@bicker \
--to=error27@gmail.com \
--cc=isdn@linux-pingi.de \
--cc=kernel-janitors@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=xiaosuo@gmail.com \
/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).