Previous changes will reject truncated / implausibly small kernel files found under /boot, but because the code that looks for kernels in /lib/modules works slightly differently it would not work there. This uses a simple stat check to reject kernels there too. Reported by Charlie Martinez. --- src/format_ext2_kernel.ml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/format_ext2_kernel.ml b/src/format_ext2_kernel.ml index 44ba035..d5d529d 100644 --- a/src/format_ext2_kernel.ml +++ b/src/format_ext2_kernel.ml @@ -93,12 +93,16 @@ and find_kernel_from_lib_modules debug = let files = glob "/lib/modules/*/vmlinuz" [GLOB_NOSORT; GLOB_NOESCAPE] in let files = Array.to_list files in let kernels = - List.map ( + filter_map ( fun kernel_file -> - let kernel_name = Filename.basename kernel_file in - let modpath = Filename.dirname kernel_file in - let kernel_version = Filename.basename modpath in - kernel_file, kernel_name, kernel_version, modpath + let size = try (stat kernel_file).st_size with Unix_error _ -> 0 in + if size < 10000 then None + else ( + let kernel_name = Filename.basename kernel_file in + let modpath = Filename.dirname kernel_file in + let kernel_version = Filename.basename modpath in + Some (kernel_file, kernel_name, kernel_version, modpath) + ) ) files in List.sort ( fun (_, _, a, _) (_, _, b, _) -> compare_version b a -- 2.13.1