diff options
Diffstat (limited to 'debian/patches/02_chunk-endianness.patch')
-rw-r--r-- | debian/patches/02_chunk-endianness.patch | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/debian/patches/02_chunk-endianness.patch b/debian/patches/02_chunk-endianness.patch deleted file mode 100644 index f98dfee11..000000000 --- a/debian/patches/02_chunk-endianness.patch +++ /dev/null @@ -1,72 +0,0 @@ -commit 701d6ed7361c4554411f06079816784bc43d6df4 -Author: Tobias Brunner <tobias@strongswan.org> -Date: Wed Oct 22 19:41:40 2014 +0200 - - chunk: Fix internet checksum calculation on big-endian systems - - ntohs() might be defined as noop (#define ntohs(x) (x)) so we have - to manually shorten the negated value (gets promoted to an int). - -diff --git a/src/libstrongswan/utils/chunk.c b/src/libstrongswan/utils/chunk.c -index 4b24b37..c4471be 100644 ---- a/src/libstrongswan/utils/chunk.c -+++ b/src/libstrongswan/utils/chunk.c -@@ -992,7 +992,7 @@ u_int32_t chunk_hash_static(chunk_t chunk) - */ - u_int16_t chunk_internet_checksum_inc(chunk_t data, u_int16_t checksum) - { -- u_int32_t sum = ntohs(~checksum); -+ u_int32_t sum = ntohs((u_int16_t)~checksum); - - while (data.len > 1) - { - -commit 1c70c6ed275c7701877dbf6322721af38ada2d68 -Author: Tobias Brunner <tobias@strongswan.org> -Date: Wed Oct 22 19:43:22 2014 +0200 - - unit-tests: Fix internet checksum tests on big-endian systems - - We actually need to do a byte-swap, which ntohs() only does on - little-endian systems. - -diff --git a/src/libstrongswan/tests/suites/test_chunk.c b/src/libstrongswan/tests/suites/test_chunk.c -index d71e010..b5d2365 100644 ---- a/src/libstrongswan/tests/suites/test_chunk.c -+++ b/src/libstrongswan/tests/suites/test_chunk.c -@@ -787,6 +787,11 @@ END_TEST - * test for chunk_internet_checksum[_inc]() - */ - -+static inline u_int16_t compensate_alignment(u_int16_t val) -+{ -+ return ((val & 0xff) << 8) | (val >> 8); -+} -+ - START_TEST(test_chunk_internet_checksum) - { - chunk_t chunk; -@@ -804,9 +809,9 @@ START_TEST(test_chunk_internet_checksum) - - /* need to compensate for even/odd alignment */ - sum = chunk_internet_checksum(chunk_create(chunk.ptr, 9)); -- sum = ntohs(sum); -+ sum = compensate_alignment(sum); - sum = chunk_internet_checksum_inc(chunk_create(chunk.ptr+9, 11), sum); -- sum = ntohs(sum); -+ sum = compensate_alignment(sum); - ck_assert_int_eq(0x442e, ntohs(sum)); - - chunk = chunk_from_chars(0x45,0x00,0x00,0x30,0x44,0x22,0x40,0x00,0x80,0x06, -@@ -821,9 +826,9 @@ START_TEST(test_chunk_internet_checksum) - - /* need to compensate for even/odd alignment */ - sum = chunk_internet_checksum(chunk_create(chunk.ptr, 9)); -- sum = ntohs(sum); -+ sum = compensate_alignment(sum); - sum = chunk_internet_checksum_inc(chunk_create(chunk.ptr+9, 10), sum); -- sum = ntohs(sum); -+ sum = compensate_alignment(sum); - ck_assert_int_eq(0x4459, ntohs(sum)); - } - END_TEST |