netfilter: bridge: fix wrong pointer dereference
authorPablo Neira Ayuso <pablo@netfilter.org>
Tue, 6 Mar 2012 01:22:53 +0000 (01:22 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 6 Mar 2012 19:43:49 +0000 (14:43 -0500)
In adf7ff8, a invalid dereference was added in ebt_make_names.

CC [M]  net/bridge/netfilter/ebtables.o
net/bridge/netfilter/ebtables.c: In function `ebt_make_names':
net/bridge/netfilter/ebtables.c:1371:20: warning: `t' may be used uninitialized in this function [-Wuninitialized]

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/bridge/netfilter/ebtables.c

index 15e9575..5fe2ff3 100644 (file)
@@ -1368,7 +1368,6 @@ ebt_make_names(struct ebt_entry *e, const char *base, char __user *ubase)
        if (e->bitmask == 0)
                return 0;
 
-       strncpy(name, t->u.target->name, sizeof(name));
        hlp = ubase + (((char *)e + e->target_offset) - base);
        t = (struct ebt_entry_target *)(((char *)e) + e->target_offset);
 
@@ -1378,6 +1377,7 @@ ebt_make_names(struct ebt_entry *e, const char *base, char __user *ubase)
        ret = EBT_WATCHER_ITERATE(e, ebt_make_watchername, base, ubase);
        if (ret != 0)
                return ret;
+       strncpy(name, t->u.target->name, sizeof(name));
        if (copy_to_user(hlp, name, EBT_FUNCTION_MAXNAMELEN))
                return -EFAULT;
        return 0;