Revert r349400. It has uintended effects.

Reported by:	christos@NetBSD.org
X-MFC with:	r349400.
This commit is contained in:
Cy Schubert 2019-06-30 22:27:58 +00:00
parent 8136db2894
commit a9a131902d
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=349567

View File

@ -1732,22 +1732,24 @@ ipf_pr_ipv4hdr(fin)
fi->fi_flx |= FI_FRAG;
off &= IP_OFFMASK;
fin->fin_flx |= FI_FRAGBODY;
off <<= 3;
if ((off + fin->fin_dlen > 65535) ||
(fin->fin_dlen == 0) ||
((morefrag != 0) && ((fin->fin_dlen & 7) != 0))) {
/*
* The length of the packet, starting at its
* offset cannot exceed 65535 (0xffff) as the
* length of an IP packet is only 16 bits.
*
* Any fragment that isn't the last fragment
* must have a length greater than 0 and it
* must be an even multiple of 8.
*/
fi->fi_flx |= FI_BAD;
DT1(ipf_fi_bad_fragbody_gt_65535, fr_info_t *, fin);
if (off != 0) {
fin->fin_flx |= FI_FRAGBODY;
off <<= 3;
if ((off + fin->fin_dlen > 65535) ||
(fin->fin_dlen == 0) ||
((morefrag != 0) && ((fin->fin_dlen & 7) != 0))) {
/*
* The length of the packet, starting at its
* offset cannot exceed 65535 (0xffff) as the
* length of an IP packet is only 16 bits.
*
* Any fragment that isn't the last fragment
* must have a length greater than 0 and it
* must be an even multiple of 8.
*/
fi->fi_flx |= FI_BAD;
DT1(ipf_fi_bad_fragbody_gt_65535, fr_info_t *, fin);
}
}
}
fin->fin_off = off;