]> gitweb.factorcode.org Git - factor.git/commitdiff
sequences.extras: add more parameter range checks to exchange-subseq
authorAlexander Ilin <alex.ilin@protonmail.com>
Wed, 16 Aug 2023 01:32:49 +0000 (03:32 +0200)
committerAlexander Ilin <alex.ilin@protonmail.com>
Wed, 16 Aug 2023 01:32:49 +0000 (03:32 +0200)
Make sure negative values are not accepted for sequence indices.

extra/sequences/extras/extras.factor

index dbadb2afe0464ee4c01dba6ae213895a0a9e2b41..e6f24f60427846fce81e69bae380ceb059e0888f 100644 (file)
@@ -1199,7 +1199,7 @@ INSTANCE: virtual-zip-index immutable-sequence
     '[ [ [ _ nth-unsafe @ ] [ _ set-nth-unsafe ] bi ] each-integer _ ] call ; inline
 
 : exchange-subseq ( len pos1 pos2 seq -- )
-    [ 3dup max + 1 - ] dip bounds-check nip '[
+    [ [ assert-non-negative ] tri@ 3dup max + 1 - ] dip bounds-check nip '[
         2dup _ exchange-unsafe
         [ 1 - ] [ 1 + ] [ 1 + ] tri*
     ] [ pick 0 > ] swap while 3drop ;