changeset 589:d791601ac1be

farray.sh: farray_splice() now checks the given index and length values
author Franz Glasner <fzglas.hg@dom66.de>
date Wed, 18 Sep 2024 13:13:26 +0200
parents fb7e5cd69494
children ce29bad1fd3b
files share/local-bsdtools/farray.sh
diffstat 1 files changed, 3 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/share/local-bsdtools/farray.sh	Wed Sep 18 13:05:01 2024 +0200
+++ b/share/local-bsdtools/farray.sh	Wed Sep 18 13:13:26 2024 +0200
@@ -662,16 +662,18 @@
     if [ -z "${__farr_index}" ]; then
         __farr_index=$((__farr_l_len + 1))
     else
+        _farr_is_decimal_number "${__farr_index}" || _farr_fatal "given index is not a valid number"
         if [ "${__farr_index}" -le 0 ]; then
             __farr_index=$((__farr_l_len + __farr_index))
         fi
-        # NOTE: index value length + 1 is allowed: splice at the end
+        # NOTE: index value array_length + 1 is allowed: splice at the end
         [ \( "${__farr_index}" -lt 1 \) -o \( "${__farr_index}" -gt "$((__farr_l_len + 1))" \) ] && _farr_fatal "index out of range"
     fi
     # also check the given length
     if [ -z "${__farr_length}" ]; then
         __farr_length="$((__farr_l_len - __farr_index + 1))"
     else
+        _farr_is_decimal_number "${__farr_length}" || _farr_fatal "given length is not a valid number"
         [ \( "${__farr_length}" -lt 0 \) -o \( "${__farr_length}" -gt "$((__farr_l_len - __farr_index + 1))" \) ] && _farr_fatal "length out of valid range"
     fi
     if [ ${__farr_length} -eq ${__farr_r_len} ]; then