Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

wext: handle NULL extra data in iwe_stream_add_point better

gcc-7 complains that wl3501_cs passes NULL into a function that
then uses the argument as the input for memcpy:

drivers/net/wireless/wl3501_cs.c: In function 'wl3501_get_scan':
include/net/iw_handler.h:559:3: error: argument 2 null where non-null expected [-Werror=nonnull]
memcpy(stream + point_len, extra, iwe->u.data.length);

This works fine here because iwe->u.data.length is guaranteed to be 0
and the memcpy doesn't actually have an effect.

Making the length check explicit avoids the warning and should have
no other effect here.

Also check the pointer itself, since otherwise we get warnings
elsewhere in the code.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>

authored by

Arnd Bergmann and committed by
Johannes Berg
93be2b74 7acec26c

+2 -1
+2 -1
include/net/iw_handler.h
··· 556 556 memcpy(stream + lcp_len, 557 557 ((char *) &iwe->u) + IW_EV_POINT_OFF, 558 558 IW_EV_POINT_PK_LEN - IW_EV_LCP_PK_LEN); 559 - memcpy(stream + point_len, extra, iwe->u.data.length); 559 + if (iwe->u.data.length && extra) 560 + memcpy(stream + point_len, extra, iwe->u.data.length); 560 561 stream += event_len; 561 562 } 562 563 return stream;