netdev
[Top] [All Lists]

Re: [PATCH 2.6 NET] Catch wrong RTATTR_MAX with BUG()

To: Thomas Graf <tgraf@xxxxxxx>
Subject: Re: [PATCH 2.6 NET] Catch wrong RTATTR_MAX with BUG()
From: "David S. Miller" <davem@xxxxxxxxxxxxx>
Date: Thu, 9 Sep 2004 09:55:31 -0700
Cc: netdev@xxxxxxxxxxx
In-reply-to: <20040909164346.GA18994@postel.suug.ch>
References: <20040909164346.GA18994@postel.suug.ch>
Sender: netdev-bounce@xxxxxxxxxxx
On Thu, 9 Sep 2004 18:43:46 +0200
Thomas Graf <tgraf@xxxxxxx> wrote:

> Catches outdated/invalid RTATTR_MAX and therefore avoids possible stack
> corruption.

Your test has an off by one error, but more importantly,
it's probably better to do this at compile time with
something like:

extern void rtattr_max_too_small(void);

...

void __init rtnetlink_init(void)
{
        if (IFLA_MAX > RTATTR_MAX ||
            IFA_MAX > RTATTR_MAX ||
            RTA_MAX > RTATTR_MAX ||
            NDA_MAX > RTATTR_MAX ||
            TCA_MAX > RTATTR_MAX ||
            TCAA_MAX > RTATTR_MAX)
                rtattr_max_too_small();

I would therefore accept a patch that did things
this way.  BUG()'ing at runtime for something like
this is too rude. :)

Thanks.


<Prev in Thread] Current Thread [Next in Thread>