dccp: allow probing of CCID-array length
authorGerrit Renker <gerrit@erg.abdn.ac.uk>
Sun, 7 Feb 2010 20:20:28 +0000 (20:20 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 12 Feb 2010 19:47:00 +0000 (11:47 -0800)
commit69a6a0b38a139ccceef32222108caca8a9b0b795
tree04e24f2b012c14f33f5bc3d6f96f84056cf1fbbe
parent7455a76f170f794498d26081a5f15b797ef1a2aa
dccp: allow probing of CCID-array length

This fixes a problem in the DCCP getsockopt() API: currently there is no way
for a user to a priori know the number of built-in CCIDs, other than trying
DCCP_SOCKOPT_AVAILABLE_CCIDS in a loop, incrementing the option length until
EINVAL is no longer returned.

This patch truncates the array to the user-provided length. No copy is made
when the length is <= 0.

Due to the length restriction in do_dccp_getsockopt() to sizeof(int), the
minimum array length remains 4, which is a reasonable default (only 3
CCIDs, CCID-2..4, are currently defined).

Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
Documentation/networking/dccp.txt
net/dccp/ccid.c