test_bitmap: Do not accidentally use stack VLA
Subsystems (2)
PATCH 1/1 test_bitmap: Do not accidentally use stack VLA
This avoids an accidental stack VLA (since the compiler thinks the value of "len" can change, even when marked "const"). This just replaces it with a #define so it will DTRT.
Seen with -Wvla. Fixed as part of the directive to remove all VLAs from the kernel: https://lkml.org/lkml/2018/3/7/621
Cc Yury Norov <[email protected]>
Cc Andy Shevchenko <[email protected]>
Cc Matthew Wilcox <[email protected]>
Signed-off-by Kees Cook <[email protected]>
--- lib/test_bitmap.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)
lib/test_bitmap.c +6 -4
@@ -292,15 +292,17 @@ static void __init test_bitmap_parselist(void) } } +#define EXP_BYTES (sizeof(exp) * 8) +static void __init test_bitmap_arr32 (void ) { -unsigned int nbits, next_bit, len =sizeof (exp) *8 ; +unsigned int nbits, next_bit;u32 arr[sizeof (exp) /4 ]; -DECLARE_BITMAP (bmap2, len); +DECLARE_BITMAP (bmap2,EXP_BYTES );memset (arr,0xa5 ,sizeof (arr)); -for (nbits =0 ; nbits < len; ++nbits) { +for (nbits =0 ; nbits <EXP_BYTES ; ++nbits) {bitmap_to_arr32 (arr, exp, nbits);bitmap_from_arr32 (bmap2, arr, nbits);expect_eq_bitmap (bmap2, exp, nbits);
@@ -312,7 +314,7 @@ static void __init test_bitmap_arr32(void)" tail is not safely cleared: %d\n" , nbits, next_bit); -if (nbits < len -32 ) +if (nbits <EXP_BYTES -32 )expect_eq_uint (arr[DIV_ROUND_UP (nbits,32 )],0xa5a5a5a5 ); }
Signature · 6 lines
2.7.4 -- Kees Cook Pixel Security