From 428295739e22953840d577be5cb7e66de0e8edf1 Mon Sep 17 00:00:00 2001 From: Vladimir Serbinenko Date: Fri, 25 Oct 2013 22:51:03 +0200 Subject: [PATCH] * grub-core/disk/raid6_recover.c: Use unsigned arithmetics when appropriate. --- ChangeLog | 5 +++++ grub-core/disk/raid6_recover.c | 13 +++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index d7235e368..2cc67a772 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2013-10-25 Vladimir Serbinenko + + * grub-core/disk/raid6_recover.c: Use unsigned arithmetics when + appropriate. + 2013-10-25 Vladimir Serbinenko * grub-core/video/bitmap_scale.c: Use unsigned arithmetics when diff --git a/grub-core/disk/raid6_recover.c b/grub-core/disk/raid6_recover.c index ba889ba3d..61a8ba666 100644 --- a/grub-core/disk/raid6_recover.c +++ b/grub-core/disk/raid6_recover.c @@ -30,11 +30,11 @@ GRUB_MOD_LICENSE ("GPLv3+"); /* x**y. */ static grub_uint8_t powx[255 * 2]; /* Such an s that x**s = y */ -static int powx_inv[256]; +static unsigned powx_inv[256]; static const grub_uint8_t poly = 0x1d; static void -grub_raid_block_mulx (int mul, char *buf, int size) +grub_raid_block_mulx (unsigned mul, char *buf, int size) { int i; grub_uint8_t *p; @@ -48,7 +48,7 @@ grub_raid_block_mulx (int mul, char *buf, int size) static void grub_raid6_init_table (void) { - int i; + unsigned i; grub_uint8_t cur = 1; for (i = 0; i < 255; i++) @@ -148,7 +148,7 @@ grub_raid6_recover (struct grub_diskfilter_segment *array, int disknr, int p, else { /* Two bad devices */ - int c; + unsigned c; if (grub_diskfilter_read_node (&array->nodes[p], sector, size >> GRUB_DISK_SECTOR_BITS, buf)) @@ -162,10 +162,11 @@ grub_raid6_recover (struct grub_diskfilter_segment *array, int disknr, int p, grub_crypto_xor (qbuf, qbuf, buf, size); - c = (255 - bad1 + (255 - powx_inv[(powx[bad2 - bad1 + 255] ^ 1)])) % 255; + c = ((255 ^ bad1) + + (255 ^ powx_inv[(powx[bad2 + (bad1 ^ 255)] ^ 1)])) % 255; grub_raid_block_mulx (c, qbuf, size); - c = (bad2 + c) % 255; + c = ((unsigned) bad2 + c) % 255; grub_raid_block_mulx (c, pbuf, size); grub_crypto_xor (pbuf, pbuf, qbuf, size);