Message ID | 20170111143532.485827-1-arnd@arndb.de (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Johannes Berg |
Headers | show |
On Wed, 2017-01-11 at 15:35 +0100, Arnd Bergmann wrote: > 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); I love wext ;-) > This works fine here because iwe->u.data.length is guaranteed to be > NULL, and the memcpy doesn't actually have an effect. I think you mean 0, not NULL, but I can fix that when I apply it. johannes
On Wed, Jan 11, 2017 at 3:38 PM, Johannes Berg <johannes@sipsolutions.net> wrote: > On Wed, 2017-01-11 at 15:35 +0100, Arnd Bergmann wrote: >> This works fine here because iwe->u.data.length is guaranteed to be >> NULL, and the memcpy doesn't actually have an effect. > > I think you mean 0, not NULL, but I can fix that when I apply it. Right, thanks! Arnd
On Wed, 2017-01-11 at 16:00 +0100, Arnd Bergmann wrote: > On Wed, Jan 11, 2017 at 3:38 PM, Johannes Berg > <johannes@sipsolutions.net> wrote: > > On Wed, 2017-01-11 at 15:35 +0100, Arnd Bergmann wrote: > > > This works fine here because iwe->u.data.length is guaranteed to > > > be > > > NULL, and the memcpy doesn't actually have an effect. > > > > I think you mean 0, not NULL, but I can fix that when I apply it. > > Right, thanks! Applied. Also fixed the typo in the subject :) johannes
diff --git a/include/net/iw_handler.h b/include/net/iw_handler.h index e0f4109e64c6..1a41043688bc 100644 --- a/include/net/iw_handler.h +++ b/include/net/iw_handler.h @@ -556,7 +556,8 @@ iwe_stream_add_point(struct iw_request_info *info, char *stream, char *ends, memcpy(stream + lcp_len, ((char *) &iwe->u) + IW_EV_POINT_OFF, IW_EV_POINT_PK_LEN - IW_EV_LCP_PK_LEN); - memcpy(stream + point_len, extra, iwe->u.data.length); + if (iwe->u.data.length) + memcpy(stream + point_len, extra, iwe->u.data.length); stream += event_len; } return stream;
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 NULL, and the memcpy doesn't actually have an effect. Making the length check explicit avoids the warning and should have no other effect here. Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- include/net/iw_handler.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)