[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
disk/mdraid1x_linux.c:181:15: warning: array subscript <unknown> is outs
From: |
Paul Menzel |
Subject: |
disk/mdraid1x_linux.c:181:15: warning: array subscript <unknown> is outside array bounds of ‘grub_uint16_t[0]’ {aka ‘short unsigned int[0]’} [-Warray-bounds] |
Date: |
Fri, 20 Mar 2020 09:24:00 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.6.0 |
Dear GRUB folks,
Using Debian Sid/unstable with
gcc (Debian 10-20200312-2) 10.0.1 20200312 (experimental) [master
revision c56871dd15a:7ba6e7f0f21:daf2852b883762d921361462dad1f99320faca2a]
building GRUB fails with the error below due to treating warnings as errors.
gcc -DHAVE_CONFIG_H -I. -I.. -Wall -W -DGRUB_MACHINE_EFI=1 -DGRUB_MACHINE=X86_64_EFI
-m64 -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/10/include -I../include
-I../include -DGRUB_FILE=\"disk/mdraid1x_linux.c\" -I. -I. -I.. -I..
-I../include -I../include -I../grub-core/lib/libgcrypt-grub/src/
-D_FILE_OFFSET_BITS=64 -Os -m64 -Wall -W -Wshadow -Wpointer-arith -Wundef
-Wchar-subscripts -Wcomment -Wdeprecated-declarations -Wdisabled-optimization
-Wdiv-by-zero -Wfloat-equal -Wformat-extra-args -Wformat-security -Wformat-y2k -Wimplicit
-Wimplicit-function-declaration -Wimplicit-int -Wmain -Wmissing-braces
-Wmissing-format-attribute -Wmultichar -Wparentheses -Wreturn-type -Wsequence-point
-Wshadow -Wsign-compare -Wswitch -Wtrigraphs -Wunknown-pragmas -Wunused -Wunused-function
-Wunused-label -Wunused-parameter -Wunused-value -Wunused-variable -Wwrite-strings
-Wnested-externs -Wstrict-prototypes -g -Wredundant-decls -Wmissing-prototypes
-Wmissing-declarations -Wextra -Wattributes -Wendif-labels -Winit-self
-Wint-to-pointer-cast -Winvalid-pch -Wmissing-field-initializers -Wnonnull -Woverflow
-Wvla -Wpointer-to-int-cast -Wstrict-aliasing -Wvariadic-macros -Wvolatile-register-var
-Wpointer-sign -Wmissing-include-dirs -Wmissing-prototypes -Wmissing-declarations
-Wformat=2 -freg-struct-return -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-3dnow
-msoft-float -fno-dwarf2-cfi-asm -mno-stack-arg-probe -fno-asynchronous-unwind-tables
-fno-unwind-tables -fno-ident -mcmodel=large -mno-red-zone -fno-PIE -fno-pie
-fno-stack-protector -Wtrampolines -ffreestanding -MT
disk/mdraid1x_module-mdraid1x_linux.o -MD -MP -MF
disk/.deps-core/mdraid1x_module-mdraid1x_linux.Tpo -c -o
disk/mdraid1x_module-mdraid1x_linux.o `test -f 'disk/mdraid1x_linux.c' || echo
'./'`disk/mdraid1x_linux.c
disk/mdraid1x_linux.c: In function ‘grub_mdraid_detect’:
disk/mdraid1x_linux.c:181:15: warning: array subscript <unknown> is outside
array bounds of ‘grub_uint16_t[0]’ {aka ‘short unsigned int[0]’} [-Warray-bounds]
181 | (char *) &sb.dev_roles[grub_le_to_cpu32 (sb.dev_number)]
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
disk/mdraid1x_linux.c:98:17: note: while referencing ‘dev_roles’
98 | grub_uint16_t dev_roles[]; /* Role in array, or 0xffff for a spare,
or 0xfffe for faulty. */
| ^~~~~~~~~
disk/mdraid1x_linux.c:127:33: note: defined here ‘sb’
127 | struct grub_raid_super_1x sb;
|
Code in question seems to be:
if (grub_disk_read (disk, sector,
(char *) &sb.dev_roles[grub_le_to_cpu32
(sb.dev_number)]
- (char *) &sb,
sizeof (role), &role))
return NULL;
Normally, it should be fixed by using `grub_uint16_t[]` instead of
`grub_uint16_t[0]`, but I haven’t found out where yet.
Kind regards,
Paul
- disk/mdraid1x_linux.c:181:15: warning: array subscript <unknown> is outside array bounds of ‘grub_uint16_t[0]’ {aka ‘short unsigned int[0]’} [-Warray-bounds],
Paul Menzel <=