Message ID | 1509211918-14829-10-git-send-email-u9012063@gmail.com |
---|---|
State | Changes Requested |
Headers | show |
Series | Fix clang static analysis null pointer bugs. | expand |
On Sat, Oct 28, 2017 at 10:31:56AM -0700, William Tu wrote: > Clang reports possible null pointer '&wc->masks.ipv6_src' to memset. > Workaround it by adding extra pointer check. > > Signed-off-by: William Tu <u9012063@gmail.com> > --- > lib/tnl-neigh-cache.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/lib/tnl-neigh-cache.c b/lib/tnl-neigh-cache.c > index a28ce1de8855..b3024848b8d5 100644 > --- a/lib/tnl-neigh-cache.c > +++ b/lib/tnl-neigh-cache.c > @@ -178,6 +178,9 @@ tnl_nd_snoop(const struct flow *flow, struct flow_wildcards *wc, > return EINVAL; > } > > + if (OVS_UNLIKELY(!wc)) > + return EINVAL; > + > memset(&wc->masks.ipv6_src, 0xff, sizeof wc->masks.ipv6_src); > memset(&wc->masks.ipv6_dst, 0xff, sizeof wc->masks.ipv6_dst); > memset(&wc->masks.nd_target, 0xff, sizeof wc->masks.nd_target); Thanks for taking a look at this. In practice, I believe that there is no bug because this function is currently always called with nonnull 'wc'. If it were to be called with a null 'wc', however, we'd still want the function to do its work instead of aborting. So I think that the correct change would be to surround the memsets with "if (wc) { ... }"; (In addition, OVS coding style calls for {} around conditional statements.) Thanks, Ben.
diff --git a/lib/tnl-neigh-cache.c b/lib/tnl-neigh-cache.c index a28ce1de8855..b3024848b8d5 100644 --- a/lib/tnl-neigh-cache.c +++ b/lib/tnl-neigh-cache.c @@ -178,6 +178,9 @@ tnl_nd_snoop(const struct flow *flow, struct flow_wildcards *wc, return EINVAL; } + if (OVS_UNLIKELY(!wc)) + return EINVAL; + memset(&wc->masks.ipv6_src, 0xff, sizeof wc->masks.ipv6_src); memset(&wc->masks.ipv6_dst, 0xff, sizeof wc->masks.ipv6_dst); memset(&wc->masks.nd_target, 0xff, sizeof wc->masks.nd_target);
Clang reports possible null pointer '&wc->masks.ipv6_src' to memset. Workaround it by adding extra pointer check. Signed-off-by: William Tu <u9012063@gmail.com> --- lib/tnl-neigh-cache.c | 3 +++ 1 file changed, 3 insertions(+)