From: "Albert D. Cahalan" <acahalan@cs.uml.edu>
To: davem@redhat.com (David S. Miller)
Cc: chris@scary.beasts.org (Chris Evans), linux-kernel@vger.kernel.org
Subject: Re: Minor net/core/sock.c security issue?
Date: Mon, 23 Jul 2001 23:02:44 -0400 (EDT) [thread overview]
Message-ID: <200107240302.f6O32iB279266@saturn.cs.uml.edu> (raw)
In-Reply-To: <15196.45004.237634.928656@pizda.ninka.net> from "David S. Miller" at Jul 23, 2001 04:14:20 PM
David S. Miller writes:
> In short, min/max usage is pretty broken. And it is broken for
> several reasons:
>
> 1) Signedness, what you have discovered.
>
> 2) Arg evaluation.
>
> 3) Multiple definitions
...
> There is even commentary about this in include/linux/netfilter.h along
> with Rusty's attempt to make reasonable macros. I personally disagree
> with keeping them as macros because of the arg multiple evaluation
> issues.
>
> I think the way to fix this is to either:
>
> 1) have standard inline functions with names that suggest the
> signedness, much like Rusty's netfilter macros.
>
> 2) Just open code all instances of min/max, there will be no
> mistaking what the code does in such a case.
>
> In both cases, min/max simply die and nobody can therefore misuse them
> anymore.
The macros won't die. You could make global ones like this:
#define min(a,b) Never do this due to signed/unsigned issues.
#define max(a,b) Never do this due to signed/unsigned issues.
#define MIN(a,b) Never do this due to signed/unsigned issues.
#define MAX(a,b) Never do this due to signed/unsigned issues.
Long term, __builtin_min() and __builtin_max() would be nice.
I'm guessing the g++ <? and >? operators don't handle signs right,
but in case they do then that is an even better option.
next prev parent reply other threads:[~2001-07-24 3:03 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-07-23 22:24 Chris Evans
2001-07-23 23:14 ` David S. Miller
2001-07-24 3:02 ` Albert D. Cahalan [this message]
2001-07-24 3:41 ` David S. Miller
2001-07-24 4:55 ` Albert D. Cahalan
2001-07-24 22:24 ` Alexey Kuznetsov
2001-07-27 9:56 ` David S. Miller
2001-07-27 16:44 ` kuznet
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=200107240302.f6O32iB279266@saturn.cs.uml.edu \
--to=acahalan@cs.uml.edu \
--cc=chris@scary.beasts.org \
--cc=davem@redhat.com \
--cc=linux-kernel@vger.kernel.org \
/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
all inboxes | Powered by JetHome®