mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-14 10:09:48 +00:00
ipsec: Return error code if no matching SA was found
If we matched SP to a packet, but no associated SA was found ipsec4_allocsa will return NULL while setting error=0. This resulted in use after free and potential kernel panic. Return EINPROGRESS if the case described above instead. Obtained from: Semihalf Sponsored by: Stormshield Differential revision: https://reviews.freebsd.org/D30994
This commit is contained in:
parent
6b66194bcb
commit
a16771de4c
@ -322,6 +322,12 @@ ipsec4_check_pmtu(struct mbuf *m, struct secpolicy *sp, int forwarding)
|
||||
sav = ipsec4_allocsa(m, sp, &idx, &error);
|
||||
if (sav == NULL) {
|
||||
key_freesp(&sp);
|
||||
/*
|
||||
* No matching SA was found and SADB_ACQUIRE message was generated.
|
||||
* Since we have matched a SP to this packet drop it silently.
|
||||
*/
|
||||
if (error == 0)
|
||||
error = EINPROGRESS;
|
||||
if (error != EJUSTRETURN)
|
||||
m_freem(m);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user