RFC Errata
RFC 1624, "Computation of the Internet Checksum via Incremental Update", May 1994
Source of RFC: LegacyArea Assignment: art
Errata ID: 4782
Status: Held for Document Update
Type: Technical
Publication Format(s) : TEXT
Reported By: Ihsan Ulla Sharief
Date Reported: 2016-08-18
Held for Document Update by: Orie Steele
Date Held: 2024-05-03
Section 3 says:
The problem is avoided by not assuming this property. The correct equation is given below: HC' = ~(C + (-m) + m') -- [Eqn. 3] = ~(~HC + ~m + m')
It should say:
The problem is avoided by not assuming this property. The correct equation is given below: HC' = ~(C + (-m) + m') -- [Eqn. 3] = ~(~HC + ~m + m')
Notes:
The RFC is for computing incremental checksum and ensuring the computed checksum does not result in 0xFFFF (representing -0). However, when in cases where the original value (m) has not changed, and original header checksum (HC) is 0, it will change the fianl checksum value to 0xFFFF (against the intent of this RFC).
Example:
m = 0x5555
~m = 0xAAAA
m' = 0x5555
Checksum (HC) = 0x0000
Checksum compliment (~HC) = 0xFFFF
incremental checksum = ~(~HC + ~m + m') ~(0xFFFF + 0xAAAA + 0x5555) = ~(0x0000) = 0xFFFF
Solution:
Need to explicitly mention that the incremental checksum computation should be done only when there is change in value (ie, m != m').