]> git.baikalelectronics.ru Git - kernel.git/commit
macsec: always read MACSEC_SA_ATTR_PN as a u64
authorSabrina Dubroca <sd@queasysnail.net>
Fri, 22 Jul 2022 09:16:30 +0000 (11:16 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 3 Aug 2022 10:03:50 +0000 (12:03 +0200)
commit9698249538feca3f292578437fb5a5418932839e
tree21648ff1383de20444d9ebe7c8300c40d2b59391
parent1153f0f0931f4cf23c7967c31bf9c2c1538029d1
macsec: always read MACSEC_SA_ATTR_PN as a u64

[ Upstream commit deba3e8b4fc7110d946f40f486476cb1eb0b9eac ]

Currently, MACSEC_SA_ATTR_PN is handled inconsistently, sometimes as a
u32, sometimes forced into a u64 without checking the actual length of
the attribute. Instead, we can use nla_get_u64 everywhere, which will
read up to 64 bits into a u64, capped by the actual length of the
attribute coming from userspace.

This fixes several issues:
 - the check in validate_add_rxsa doesn't work with 32-bit attributes
 - the checks in validate_add_txsa and validate_upd_sa incorrectly
   reject X << 32 (with X != 0)

Fixes: bb178617ead6 ("macsec: Netlink support of XPN cipher suites (IEEE 802.1AEbw)")
Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/macsec.c