]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/lib/reed_solomon.c (init_powx): Set gf_powx_inv[0] just to
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Thu, 15 Dec 2011 01:20:21 +0000 (02:20 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Thu, 15 Dec 2011 01:20:21 +0000 (02:20 +0100)
be deterministic.
(syndroms): Compute 0 syndrom.
(rs_recover): Use 0 syndrom.

ChangeLog
grub-core/lib/reed_solomon.c

index ecc637e63f99c73acc718b3d9a128b1a948c221c..5a654270db4214b42e8f7f31988aa64d75512ae2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2011-12-14  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/lib/reed_solomon.c (init_powx): Set gf_powx_inv[0] just to
+       be deterministic.
+       (syndroms): Compute 0 syndrom.
+       (rs_recover): Use 0 syndrom.
+
 2011-12-14  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * include/grub/kernel.h (FOR_MODULES): Make it a bit faster.
index 7da5f204c749aede26a315ac96a839b745b244ed..fc5443c28e5d48ec1bdea5a46da79390955fa85b 100644 (file)
@@ -89,6 +89,7 @@ init_powx (void)
   int i;
   grub_uint8_t cur = 1;
 
+  gf_powx_inv[0] = 0;
   for (i = 0; i < 255; i++)
     {
       gf_powx[i] = cur;
@@ -165,7 +166,8 @@ syndroms (gf_single_t *m, grub_size_t s, grub_size_t rs,
 {
   gf_single_t xn = 1;
   unsigned i;
-  for (i = 0; i < rs; i++)
+  sy[0] = pol_evaluate (m, s + rs - 1, xn);
+  for (i = 1; i < rs; i++)
     {
       if (xn & (1 << (GF_SIZE - 1)))
        {
@@ -344,7 +346,7 @@ rs_recover (gf_single_t *m, grub_size_t s, grub_size_t rs)
 #endif
 
     for (j = 0; j < errnum; j++)
-      eq[j] = errpot[j];
+      eq[j] = 1;
     eq[errnum] = sy[0];
     for (i = 1; i < (int) rs; i++)
       {
@@ -530,7 +532,7 @@ main (int argc, char **argv)
   out = fopen ("tst_rs.bin", "wb");
   fwrite (buf, 1, s + rs, out);
   fclose (out);
-#if 0
+#if 1
   grub_memset (buf + 512 * 15, 0, 512);
 #endif