]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Fix computation of new size when reallocating unbounded string
authorYannick Moy <moy@adacore.com>
Wed, 3 Jul 2024 13:23:34 +0000 (15:23 +0200)
committerMarc Poulhiès <dkm@gcc.gnu.org>
Thu, 1 Aug 2024 15:14:38 +0000 (17:14 +0200)
The procedure Realloc_For_Chunk which is used to reallocate an unbounded
string when needed may lead in theory to an overflow, due to the use of
variable S_Length denoting the current allocated length instead of
Source.Last denoting the current string length. Now fixed.

This has no effect in practice since the only targets that use this
version of Ada.Strings.Unbounded do not have enough memory to make it
possible to have an overflow here.

gcc/ada/

* libgnat/a-strunb.adb (Realloc_For_Chunk): Fix computation of new
size.

gcc/ada/libgnat/a-strunb.adb

index 219abad3f07b8a25978384d71313928fadf3a921..c3d4c71271b2064925c34e0decebb9998e758a23 100644 (file)
@@ -824,7 +824,7 @@ package body Ada.Strings.Unbounded is
          declare
             New_Size : constant Positive :=
               Saturated_Sum
-                (Sum (S_Length, Chunk_Size), S_Length / Growth_Factor);
+                (Sum (Source.Last, Chunk_Size), S_Length / Growth_Factor);
 
             New_Rounded_Up_Size : constant Positive :=
               Saturated_Mul