]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
[DECNet] fib: Fix out of bound access of dn_fib_props[]
authorThomas Graf <tgraf@suug.ch>
Wed, 19 Mar 2008 21:14:34 +0000 (23:14 +0200)
committerAdrian Bunk <bunk@kernel.org>
Wed, 19 Mar 2008 21:14:34 +0000 (23:14 +0200)
Fixes a typo which caused fib_props[] to have the wrong size
and makes sure the value used to index the array which is
provided by userspace via netlink is checked to avoid out of
bound access.

Signed-off-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Adrian Bunk <bunk@kernel.org>
net/decnet/dn_fib.c

index 99bc061759c3084efb674eb6bfe231edf162baf1..72ecb660a7b684364986bd5bfa3eedc76b2b1fb9 100644 (file)
@@ -65,7 +65,7 @@ static struct
 {
        int error;
        u8 scope;
-} dn_fib_props[RTA_MAX+1] = {
+} dn_fib_props[RTN_MAX+1] = {
        [RTN_UNSPEC] =      { .error = 0,       .scope = RT_SCOPE_NOWHERE },
        [RTN_UNICAST] =     { .error = 0,       .scope = RT_SCOPE_UNIVERSE },
        [RTN_LOCAL] =       { .error = 0,       .scope = RT_SCOPE_HOST },
@@ -275,6 +275,9 @@ struct dn_fib_info *dn_fib_create_info(const struct rtmsg *r, struct dn_kern_rta
        struct dn_fib_info *ofi;
        int nhs = 1;
 
+       if (r->rtm_type > RTN_MAX)
+               goto err_inval;
+
        if (dn_fib_props[r->rtm_type].scope > r->rtm_scope)
                goto err_inval;