From 88fc730efdd31cc4bf13932ff3cc5b097a5eb23c Mon Sep 17 00:00:00 2001 From: Yannick Moy Date: Wed, 3 Jul 2024 15:23:34 +0200 Subject: [PATCH] ada: Fix computation of new size when reallocating unbounded string 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 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/ada/libgnat/a-strunb.adb b/gcc/ada/libgnat/a-strunb.adb index 219abad3f07..c3d4c71271b 100644 --- a/gcc/ada/libgnat/a-strunb.adb +++ b/gcc/ada/libgnat/a-strunb.adb @@ -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 -- 2.47.2