aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Chang <mchang@suse.com>2022-03-28 15:00:54 +0800
committerDaniel Kiper <daniel.kiper@oracle.com>2022-04-20 18:29:00 +0200
commit3ce13d974b887338ae972c79b41ff6fc0eee6388 (patch)
tree3306069df4cd070bda80b829042d6872c6012126
parentacffb81485e35e1f28152949a1c6e1d4dbf5172e (diff)
downloadgrub-3ce13d974b887338ae972c79b41ff6fc0eee6388.tar.gz
lib/reed_solomon: Fix array subscript 0 is outside array bounds
The grub_absolute_pointer() is a compound expression that can only work within a function. We are out of luck here when the pointer variables require global definition due to ATTRIBUTE_TEXT that have to use fully initialized global definition because of the way linkers work. static gf_single_t * const gf_powx ATTRIBUTE_TEXT = (void *) 0x100000; For the reason given above, use GCC diagnostic pragmas to suppress the array-bounds warning. Signed-off-by: Michael Chang <mchang@suse.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-rw-r--r--grub-core/lib/reed_solomon.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/grub-core/lib/reed_solomon.c b/grub-core/lib/reed_solomon.c
index 82779a296..562bd2e3e 100644
--- a/grub-core/lib/reed_solomon.c
+++ b/grub-core/lib/reed_solomon.c
@@ -102,6 +102,11 @@ static gf_single_t errvals[256];
static gf_single_t eqstat[65536 + 256];
#endif
+#if __GNUC__ == 12
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Warray-bounds"
+#endif
+
static gf_single_t
gf_mul (gf_single_t a, gf_single_t b)
{
@@ -319,6 +324,10 @@ decode_block (gf_single_t *ptr, grub_size_t s,
}
}
+#if __GNUC__ == 12
+#pragma GCC diagnostic pop
+#endif
+
#if !defined (STANDALONE)
static void
encode_block (gf_single_t *ptr, grub_size_t s,