Hello community,

here is the log from the commit of package bird for openSUSE:Factory checked in 
at 2020-11-17 21:26:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/bird (Old)
 and      /work/SRC/openSUSE:Factory/.bird.new.24930 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "bird"

Tue Nov 17 21:26:41 2020 rev:7 rq:848952 version:2.0.7

Changes:
--------
--- /work/SRC/openSUSE:Factory/bird/bird.changes        2020-09-27 
11:50:49.088110778 +0200
+++ /work/SRC/openSUSE:Factory/.bird.new.24930/bird.changes     2020-11-17 
21:26:41.977461950 +0100
@@ -1,0 +2,6 @@
+Mon Nov 16 12:45:29 UTC 2020 - Mark Stopka <[email protected]>
+
+- Add patch to fix test on Big Endian architectures
+  * fix_test_for_bigendian_arch.patch
+
+-------------------------------------------------------------------

New:
----
  fix_test_for_bigendian_arch.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ bird.spec ++++++
--- /var/tmp/diff_new_pack.KxP6RY/_old  2020-11-17 21:26:42.653462598 +0100
+++ /var/tmp/diff_new_pack.KxP6RY/_new  2020-11-17 21:26:42.657462601 +0100
@@ -31,6 +31,7 @@
 Source1:        bird.service
 Source3:        bird.tmpfiles.d
 Patch0:         gcc10.patch
+Patch1:         fix_test_for_bigendian_arch.patch
 BuildRequires:  bison
 BuildRequires:  flex
 BuildRequires:  ncurses-devel
@@ -66,6 +67,7 @@
 %prep
 %setup -q
 %patch0 -p1
+%patch1 -p1
 
 %build
 export CFLAGS="${RPM_OPT_FLAGS} -fpic -DPIC -fno-strict-aliasing 
-Wno-parentheses -Wno-pointer-sign"

++++++ fix_test_for_bigendian_arch.patch ++++++
diff --git a/lib/fletcher16_test.c b/lib/fletcher16_test.c
index 
1020e6ecc8cac116dd45710ff7993f2e8641d694..3cd4c302f19700d32b0d3e68d5137b4409bfe976
 100644
--- a/lib/fletcher16_test.c
+++ b/lib/fletcher16_test.c
@@ -24,24 +24,33 @@ straightforward_fletcher16_compute(const char *data)
     sum2 = (sum2 + sum1) % 255;
   }
 
-  return (sum2 << 8) | sum1;
+  sum2 = (sum2 + sum1) % 255;
+  sum2 = (sum2 + sum1) % 255;
+
+  return (sum1 << 8) | sum2;
 }
 
 static u16
 straightforward_fletcher16_checksum(const char *data)
 {
   u16 csum;
-  u8 c0,c1,f0,f1;
+  u16 c0,c1,x,y;
 
   csum = straightforward_fletcher16_compute(data);
-  f0 = csum & 0xff;
-  f1 = (csum >> 8) & 0xff;
-  c0 = 0xff - ((f0 + f1) % 0xff);
-  c1 = 0xff - ((f0 + c0) % 0xff);
+  c0 = (csum >> 8) & 0xff;
+  c1 = csum & 0xff;
+
+  x = (255 +   c0 - c1) % 255;
+  y = (510 - 2*c0 + c1) % 255;
 
-  return (c1 << 8) | c0;
+  if (!x) x = 255;
+  if (!y) y = 255;
+
+  return (x << 8) | y;
 }
 
+const u8 zero16[2] = {};
+
 static int
 test_fletcher16(void *out_, const void *in_, const void *expected_out_)
 {
@@ -53,7 +62,8 @@ test_fletcher16(void *out_, const void *in_, const void 
*expected_out_)
 
   fletcher16_init(&ctxt);
   fletcher16_update(&ctxt, in, strlen(in));
-  put_u16(out, fletcher16_compute(&ctxt));
+  fletcher16_update(&ctxt, zero16, 2);
+  *out = fletcher16_compute(&ctxt);
 
   return *out == *expected_out;
 }
@@ -70,7 +80,8 @@ test_fletcher16_checksum(void *out_, const void *in_, const 
void *expected_out_)
 
   fletcher16_init(&ctxt);
   fletcher16_update(&ctxt, in, len);
-  put_u16(out, fletcher16_final(&ctxt, len, len));
+  fletcher16_update(&ctxt, zero16, 2);
+  *out = fletcher16_final(&ctxt, len+2, len);
 
   return *out == *expected_out;
 }
@@ -81,7 +92,7 @@ t_fletcher16_compute(void)
   struct bt_pair test_vectors[] = {
     {
       .in  = "\001\002",
-      .out = & (const u16) { 0x0403 },
+      .out = & ((const u16) { straightforward_fletcher16_compute("\001\002") 
}),
     },
     {
       .in  = "",
_______________________________________________
openSUSE Commits mailing list -- [email protected]
To unsubscribe, email [email protected]
List Netiquette: https://en.opensuse.org/openSUSE:Mailing_list_netiquette
List Archives: 
https://lists.opensuse.org/archives/list/[email protected]

Reply via email to