diff options
author | simon <simon@FreeBSD.org> | 2005-06-29 21:36:49 +0000 |
---|---|---|
committer | simon <simon@FreeBSD.org> | 2005-06-29 21:36:49 +0000 |
commit | 76d3f5f6768a9a26b12823a0d37fda4d373ac9f6 (patch) | |
tree | 0d01d80ed5ef7635e6b3d562c88fc976ed1c28b5 /sys/netinet/tcp_input.c | |
parent | f7f07821efbf38ac8511c86aecb6c412b4a115f7 (diff) | |
download | FreeBSD-src-76d3f5f6768a9a26b12823a0d37fda4d373ac9f6.zip FreeBSD-src-76d3f5f6768a9a26b12823a0d37fda4d373ac9f6.tar.gz |
Fix ipfw packet matching errors with address tables.
The ipfw tables lookup code caches the result of the last query. The
kernel may process multiple packets concurrently, performing several
concurrent table lookups. Due to an insufficient locking, a cached
result can become corrupted that could cause some addresses to be
incorrectly matched against a lookup table.
Submitted by: ru
Reviewed by: csjp, mlaier
Security: CAN-2005-2019
Security: FreeBSD-SA-05:13.ipfw
Correct bzip2 permission race condition vulnerability.
Obtained from: Steve Grubb via RedHat
Security: CAN-2005-0953
Security: FreeBSD-SA-05:14.bzip2
Approved by: obrien
Correct TCP connection stall denial of service vulnerability.
A TCP packets with the SYN flag set is accepted for established
connections, allowing an attacker to overwrite certain TCP options.
Submitted by: Noritoshi Demizu
Reviewed by: andre, Mohan Srinivasan
Security: CAN-2005-2068
Security: FreeBSD-SA-05:15.tcp
Approved by: re (security blanket), cperciva
Diffstat (limited to 'sys/netinet/tcp_input.c')
-rw-r--r-- | sys/netinet/tcp_input.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index 6762232..b6c2812 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -1082,7 +1082,7 @@ after_listen: * XXX this is traditional behavior, may need to be cleaned up. */ tcp_dooptions(&to, optp, optlen, thflags & TH_SYN); - if (thflags & TH_SYN) { + if (tp->t_state == TCPS_SYN_SENT && (thflags & TH_SYN)) { if (to.to_flags & TOF_SCALE) { tp->t_flags |= TF_RCVD_SCALE; tp->requested_s_scale = to.to_requested_s_scale; |