From 635b1a1c6c6b30840e591d73d1a2bb927819ef1e Mon Sep 17 00:00:00 2001 From: longpanda Date: Mon, 12 Sep 2022 21:33:47 +0800 Subject: [PATCH] Fix the 'overflow is detected' error in WIMBOOT mode for large ISO file. --- .../grub-2.04/grub-core/commands/test.c | 42 +++++++++++++++++++ INSTALL/grub/grub.cfg | 10 ++--- 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/GRUB2/MOD_SRC/grub-2.04/grub-core/commands/test.c b/GRUB2/MOD_SRC/grub-2.04/grub-core/commands/test.c index 6f1900d2..9669a482 100644 --- a/GRUB2/MOD_SRC/grub-2.04/grub-core/commands/test.c +++ b/GRUB2/MOD_SRC/grub-2.04/grub-core/commands/test.c @@ -229,6 +229,13 @@ test_parse (char **args, int *argn, int argc) (*argn) += 3; continue; } + if (grub_strcmp (args[*argn + 1], "-EQ") == 0) + { + update_val (grub_strtoull (args[*argn], 0, 0) + == grub_strtoull (args[*argn + 2], 0, 0), &ctx); + (*argn) += 3; + continue; + } if (grub_strcmp (args[*argn + 1], "-ge") == 0) { @@ -237,6 +244,13 @@ test_parse (char **args, int *argn, int argc) (*argn) += 3; continue; } + if (grub_strcmp (args[*argn + 1], "-GE") == 0) + { + update_val (grub_strtoull (args[*argn], 0, 0) + >= grub_strtoull (args[*argn + 2], 0, 0), &ctx); + (*argn) += 3; + continue; + } if (grub_strcmp (args[*argn + 1], "-gt") == 0) { @@ -245,6 +259,13 @@ test_parse (char **args, int *argn, int argc) (*argn) += 3; continue; } + if (grub_strcmp (args[*argn + 1], "-GT") == 0) + { + update_val (grub_strtoull (args[*argn], 0, 0) + > grub_strtoull (args[*argn + 2], 0, 0), &ctx); + (*argn) += 3; + continue; + } if (grub_strcmp (args[*argn + 1], "-le") == 0) { @@ -253,6 +274,13 @@ test_parse (char **args, int *argn, int argc) (*argn) += 3; continue; } + if (grub_strcmp (args[*argn + 1], "-LE") == 0) + { + update_val (grub_strtoull (args[*argn], 0, 0) + <= grub_strtoull (args[*argn + 2], 0, 0), &ctx); + (*argn) += 3; + continue; + } if (grub_strcmp (args[*argn + 1], "-lt") == 0) { @@ -261,6 +289,13 @@ test_parse (char **args, int *argn, int argc) (*argn) += 3; continue; } + if (grub_strcmp (args[*argn + 1], "-LT") == 0) + { + update_val (grub_strtoull (args[*argn], 0, 0) + < grub_strtoull (args[*argn + 2], 0, 0), &ctx); + (*argn) += 3; + continue; + } if (grub_strcmp (args[*argn + 1], "-ne") == 0) { @@ -269,6 +304,13 @@ test_parse (char **args, int *argn, int argc) (*argn) += 3; continue; } + if (grub_strcmp (args[*argn + 1], "-NE") == 0) + { + update_val (grub_strtoull (args[*argn], 0, 0) + != grub_strtoull (args[*argn + 2], 0, 0), &ctx); + (*argn) += 3; + continue; + } /* GRUB extension: compare numbers skipping prefixes. Useful for comparing versions. E.g. vmlinuz-2 -plt vmlinuz-11. */ diff --git a/INSTALL/grub/grub.cfg b/INSTALL/grub/grub.cfg index 83f0e6b4..487dae0d 100644 --- a/INSTALL/grub/grub.cfg +++ b/INSTALL/grub/grub.cfg @@ -158,7 +158,7 @@ function get_os_type { function vt_check_compatible_pe { #Check for PE without external tools #set compatible if ISO file is less than 80MB - if [ $vt_chosen_size -gt 33554432 -a $vt_chosen_size -le 83886080 ]; then + if [ $vt_chosen_size -GT 33554432 -a $vt_chosen_size -LE 83886080 ]; then set ventoy_compatible=YES fi @@ -770,7 +770,7 @@ function uefi_linux_menu_func { vt_linux_chain_data "${1}${chosen_path}" - if [ -n "$LoadIsoEfiDriver" -a $vt_chosen_size -lt 104857600 ]; then + if [ -n "$LoadIsoEfiDriver" -a $vt_chosen_size -LT 104857600 ]; then if [ -f (loop)/efi/clover/cloverx64.efi ]; then unset LoadIsoEfiDriver fi @@ -1309,7 +1309,7 @@ function iso_common_menuentry { vt_chosen_img_path vt_chosen_path vt_chosen_size vt_chosen_name vt_parse_iso_volume "${vtoy_iso_part}${vt_chosen_path}" vt_system_id vt_volume_id vt_volume_space - if [ $vt_volume_space -ne $vt_chosen_size ]; then + if [ $vt_volume_space -NE $vt_chosen_size ]; then vt_mod $vt_chosen_size 2048 vt_chosen_size_mod if [ $vt_chosen_size_mod -ne 0 ]; then echo -e "\n $vt_volume_space $vt_chosen_size $vt_chosen_size_mod\n" @@ -1357,7 +1357,7 @@ function iso_common_menuentry { fi #For iKuai8 (<64MB) - if [ $vt_chosen_size -le 67108864 ]; then + if [ $vt_chosen_size -LE 67108864 ]; then if vt_str_begin "$vt_chosen_name" "iKuai"; then set vtMemDiskBoot=1 fi @@ -1799,7 +1799,7 @@ function ventoy_img_ubos { } function ventoy_img_recalbox { - if [ $vtoy_img_max_part_end -gt $vt_chosen_size ]; then + if [ $vtoy_img_max_part_end -GT $vt_chosen_size ]; then echo -e "\nPlease extend the img file size before boot it. \n" ventoy_pause return