diff --git a/assets/expected1.bin b/assets/expected1.bin index 67407da..0bfdca3 100644 --- a/assets/expected1.bin +++ b/assets/expected1.bin @@ -1 +1 @@ -Gkwy`½?ɲ \ No newline at end of file +GŽ­åú ŽŸ‚: \ No newline at end of file diff --git a/driver.c b/driver.c index ea3a6cb..2d7c45d 100644 --- a/driver.c +++ b/driver.c @@ -110,9 +110,9 @@ static int gprn_init_t(struct gf256_gprn* gprn) static ssize_t misc_read(struct file* filp, char __user* buf, size_t length, loff_t* f_pos) { - GF256_t kernel_buf[1024]; - size_t bytes_to_read = length; - size_t chunk; + static GF256_t kernel_buf[1024]; + size_t bytes_to_read = length; + size_t chunk; if (!global_gprn) return -ENODEV; diff --git a/prandom.c b/prandom.c index a5be38c..1587b6d 100644 --- a/prandom.c +++ b/prandom.c @@ -54,16 +54,13 @@ GF256_t gf256_gprn_next(struct gf256_gprn* gprn) for (i = 0; i < POLY_DEGREE; i++) { - if (gprn->t[i] != 0) - { - idx = (gprn->index + i) % POLY_DEGREE; - new_byte = GF256_Add(new_byte, GF256_Mul(gprn->t[i], gprn->coeff[idx])); - } + idx = (gprn->index + i) % POLY_DEGREE; + new_byte = GF256_Add(new_byte, GF256_Mul(gprn->coeff[i], gprn->t[idx])); } // "circular" array - gprn->coeff[gprn->index] = new_byte; - gprn->index = (gprn->index + 1) % POLY_DEGREE; + gprn->t[gprn->index] = new_byte; + gprn->index = (gprn->index + 1) % POLY_DEGREE; return new_byte; }