tcp: warn if offset reach the maxlen limit when using snprintf
authorHangbin Liu <liuhangbin@gmail.com>
Wed, 20 Nov 2019 08:38:08 +0000 (16:38 +0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 21 Nov 2019 06:23:36 +0000 (22:23 -0800)
commit9bb59a21f53e7231696257d5e6283a4fbacfb43f
tree74a2d5c284838dca140388d71a7f226057aa9b36
parentc0d59da79534e85eb550d863e35eccc8c3fd8ceb
tcp: warn if offset reach the maxlen limit when using snprintf

snprintf returns the number of chars that would be written, not number
of chars that were actually written. As such, 'offs' may get larger than
'tbl.maxlen', causing the 'tbl.maxlen - offs' being < 0, and since the
parameter is size_t, it would overflow.

Since using scnprintf may hide the limit error, while the buffer is still
enough now, let's just add a WARN_ON_ONCE in case it reach the limit
in future.

v2: Use WARN_ON_ONCE as Jiri and Eric suggested.

Suggested-by: Jiri Benc <jbenc@redhat.com>
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/sysctl_net_ipv4.c
net/ipv4/tcp_cong.c
net/ipv4/tcp_ulp.c