v3.8-rc3: uninitialized warnings in net/netfilter/xt_CT.c
From: Borislav Petkov
Date: Thu Jan 10 2013 - 06:18:10 EST
Hi,
I get
net/netfilter/xt_CT.c: In function âxt_ct_tg_check_v1â:
net/netfilter/xt_CT.c:250:6: warning: âretâ may be used uninitialized in this function [-Wmaybe-uninitialized]
net/netfilter/xt_CT.c: In function âxt_ct_tg_check_v0â:
net/netfilter/xt_CT.c:112:6: warning: âretâ may be used uninitialized in this function [-Wmaybe-uninitialized]
when building 3.8-rc3 here.
And this time, the warnings are real:
static int xt_ct_tg_check_v0(const struct xt_tgchk_param *par)
{
struct xt_ct_target_info *info = par->targinfo;
struct nf_conntrack_tuple t;
struct nf_conn *ct;
int ret;
if (info->flags & ~XT_CT_NOTRACK)
return -EINVAL;
if (info->flags & XT_CT_NOTRACK) {
ct = nf_ct_untracked_get();
atomic_inc(&ct->ct_general.use);
goto out;
}
#ifndef CONFIG_NF_CONNTRACK_ZONES
if (info->zone)
goto err1;
#endif
...
ret doesn't get initialized and if the first two if-blocks are false and
CONFIG_NF_CONNTRACK_ZONES is not defined (as is in my case) we do "goto
err1":
err1:
return ret;
which returns an uninitialized 'ret'.
Now, I don't know the code to know whether if (info->zone) is ever true
but someone better check this before subtle bugs start happening.
Ditto for the xt_ct_tg_check_v1() function.
Thanks.
--
Regards/Gruss,
Boris.
Sent from a fat crate under my desk. Formatting is fine.
--
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/