diff options
Diffstat (limited to 'net/quagga/files/patch-git-1-fletcher_checkusm')
-rw-r--r-- | net/quagga/files/patch-git-1-fletcher_checkusm | 95 |
1 files changed, 0 insertions, 95 deletions
diff --git a/net/quagga/files/patch-git-1-fletcher_checkusm b/net/quagga/files/patch-git-1-fletcher_checkusm deleted file mode 100644 index 89e57992b383..000000000000 --- a/net/quagga/files/patch-git-1-fletcher_checkusm +++ /dev/null @@ -1,95 +0,0 @@ -diff --git lib/checksum.c lib/checksum.c -index 88ec72a..f6d74d3 100644 ---- lib/checksum.c -+++ lib/checksum.c -@@ -52,34 +52,31 @@ in_cksum(void *parg, int nbytes) - /* To be consistent, offset is 0-based index, rather than the 1-based - index required in the specification ISO 8473, Annex C.1 */ - u_int16_t --fletcher_checksum(u_char * buffer, int len, u_int16_t offset) -+fletcher_checksum(u_char * buffer, const size_t len, const uint16_t offset) - { - u_int8_t *p; -- int x; -- int y; -- u_int32_t mul; -- u_int32_t c0; -- u_int32_t c1; -+ int x, y, c0, c1; - u_int16_t checksum; - u_int16_t *csum; -- int i, init_len, partial_len; -- -+ size_t partial_len, i, left = len; -+ - checksum = 0; - -+ assert (offset < len); -+ - /* - * Zero the csum in the packet. - */ - csum = (u_int16_t *) (buffer + offset); -- *(csum) = checksum; -+ *(csum) = 0; - - p = buffer; - c0 = 0; - c1 = 0; -- init_len = len; - -- while (len != 0) -+ while (left != 0) - { -- partial_len = MIN(len, MODX); -+ partial_len = MIN(left, MODX); - - for (i = 0; i < partial_len; i++) - { -@@ -90,27 +87,18 @@ fletcher_checksum(u_char * buffer, int len, u_int16_t offset) - c0 = c0 % 255; - c1 = c1 % 255; - -- len -= partial_len; -+ left -= partial_len; - } -- -- mul = (init_len - offset)*(c0); -- -- x = mul - c0 - c1; -- y = c1 - mul - 1; -- -- if (y > 0) -- y++; -- if (x < 0) -- x--; -- -- x %= 255; -- y %= 255; -- -- if (x == 0) -- x = 255; -- if (y == 0) -- y = 1; -- -+ -+ /* The cast is important, to ensure the mod is taken as a signed value. */ -+ x = (int)((len - offset - 1) * c0 - c1) % 255; -+ -+ if (x <= 0) -+ x += 255; -+ y = 510 - c0 - x; -+ if (y > 255) -+ y -= 255; -+ - /* - * Now we write this to the packet. - * We could skip this step too, since the checksum returned would -diff --git a/lib/checksum.h b/lib/checksum.h -index d3ce930..da1d3cb 100644 ---- lib/checksum.h -+++ lib/checksum.h -@@ -1,2 +1,2 @@ - extern int in_cksum(void *, int); --extern u_int16_t fletcher_checksum(u_char * buffer, int len, u_int16_t offset); -+extern u_int16_t fletcher_checksum(u_char *, const size_t len, const uint16_t offset); |