• Herbert Xu's avatar
    af_key: Fix sadb_x_ipsecrequest parsing · 096f41d3
    Herbert Xu authored
    The parsing of sadb_x_ipsecrequest is broken in a number of ways.
    First of all we're not verifying sadb_x_ipsecrequest_len.  This
    is needed when the structure carries addresses at the end.  Worse
    we don't even look at the length when we parse those optional
    addresses.
    
    The migration code had similar parsing code that's better but
    it also has some deficiencies.  The length is overcounted first
    of all as it includes the header itself.  It also fails to check
    the length before dereferencing the sa_family field.
    
    This patch fixes those problems in parse_sockaddr_pair and then
    uses it in parse_ipsecrequest.
    Reported-by: default avatarAndrey Konovalov <andreyknvl@google.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
    096f41d3
af_key.c 102 KB