From: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
To: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: Pavel Vasilyev <pavel@pavlinux.ru>,
Ming Lei <tom.leiming@gmail.com>,
LKML <linux-kernel@vger.kernel.org>,
yoshfuji@linux-ipv6.org
Subject: Re: [PATCH] Repalce strncmp by memcmp
Date: Mon, 29 Nov 2010 14:26:02 +0900 [thread overview]
Message-ID: <1291008362.5818.28.camel@takos> (raw)
In-Reply-To: <20101129041359.GA6991@core.coreip.homeip.net>
2010-11-28 (Sun) 20:13 -0800, Dmitry Torokhov wrote:
> On Mon, Nov 29, 2010 at 06:11:21AM +0300, Pavel Vasilyev wrote:
> > On 29.11.2010 05:29, Ming Lei wrote:
> > > Hi,
> > >
> > > 2010/11/29 Pavel Vasilyev <pavel@pavlinux.ru>:
> > >> This patch replace all strncmp(a, b, c) by memcmp(a, b, c).
> > >>
> > >> I test on x86_64 (AMD Opteron 285).
> > > In fact, memcmp doesn't handle case of tail of string, so
> > > it is not safe to replace strncmp with memcmp
> > >
> > #include <stdio.h>
> > #include <errno.h>
> >
> > int main() {
> >
> > char *STR = "XXXX\0";
> > char *XXX = "XXXX";
>
> Try comparing:
>
> "XXXX\0YYYY" and
> "XXXX\0ZZZZ"
>
> and observe the difference.
>
Yes, if both of the strings are NOT known to have enough length.
It is safe to replace strncmp(a,b,n) with memcmp(a,b,n)
if a or b is/are known to have enough length; strlen(a) >= n ||
strlen(b) >= n.
I think some of the replacements in the original patch are valid,
but for even those valid replacement, I think it is worth doing
that in hot code paths only.
--yoshfuji
next prev parent reply other threads:[~2010-11-29 5:34 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-29 2:09 [PATCH] Repalce strncmp by memcmp Pavel Vasilyev
2010-11-29 2:21 ` microcai
2010-11-29 2:29 ` Ming Lei
2010-11-29 3:11 ` Pavel Vasilyev
2010-11-29 4:13 ` Dmitry Torokhov
2010-11-29 5:26 ` YOSHIFUJI Hideaki [this message]
2010-11-29 12:41 ` Pavel Vasilyev
2010-11-29 3:10 ` Américo Wang
2010-11-29 10:18 ` Andi Kleen
2010-11-29 14:58 ` Steven Rostedt
2010-11-29 19:41 ` Pavel Vasilyev
2010-11-29 22:18 ` Steven Rostedt
2010-11-29 22:26 ` Steven Rostedt
2010-11-29 22:49 ` Pavel Vasilyev
2010-11-30 9:24 ` Américo Wang
2010-11-29 22:51 ` Ryan Mallon
2010-11-30 10:27 ` Bernd Petrovitsch
2010-11-29 23:32 ` Arnaud Lacombe
2010-11-30 10:34 ` Bernd Petrovitsch
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=1291008362.5818.28.camel@takos \
--to=yoshfuji@linux-ipv6.org \
--cc=dmitry.torokhov@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=pavel@pavlinux.ru \
--cc=tom.leiming@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