[COMMITTED,30/30] ada: Fix computation of new size when reallocating unbounded string

Message ID 20240801151738.400796-30-poulhies@adacore.com
State Committed
Commit 88fc730efdd31cc4bf13932ff3cc5b097a5eb23c
Headers
Series [COMMITTED,01/30] ada: Remove obsolete workaround |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_gcc_build--master-aarch64 fail Patch failed to apply
linaro-tcwg-bot/tcwg_gcc_build--master-arm fail Patch failed to apply

Commit Message

Marc Poulhiès Aug. 1, 2024, 3:17 p.m. UTC
  From: Yannick Moy <moy@adacore.com>

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.

Tested on x86_64-pc-linux-gnu, committed on master.

---
 gcc/ada/libgnat/a-strunb.adb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Patch

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