From c1ebec34788353bf126a1df1c75e1ee2110c8795 Mon Sep 17 00:00:00 2001 From: Joffrey Huguet <huguet@adacore.com> Date: Wed, 6 Dec 2023 12:04:51 +0100 Subject: [PATCH] ada: Fix precondition in Interfaces.C.Strings The precondition of both Update procedures in Interfaces.C.Strings were incorrect. This patch fixes this. gcc/ada/ * libgnat/i-cstrin.ads (Update): Fix precondition. --- gcc/ada/libgnat/i-cstrin.ads | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/gcc/ada/libgnat/i-cstrin.ads b/gcc/ada/libgnat/i-cstrin.ads index 9f1577f5e14c..3f55ddfbdc55 100644 --- a/gcc/ada/libgnat/i-cstrin.ads +++ b/gcc/ada/libgnat/i-cstrin.ads @@ -121,8 +121,9 @@ is with Pre => Item /= Null_Ptr - and then Strlen (Item) <= size_t'Last - Offset - and then Strlen (Item) + Offset <= Chars'Length, + and then (Chars'First /= 0 or else Chars'Last /= size_t'Last) + and then Chars'Length <= size_t'Last - Offset + and then Chars'Length + Offset <= Strlen (Item), Global => (In_Out => C_Memory); procedure Update @@ -133,8 +134,8 @@ is with Pre => Item /= Null_Ptr - and then Strlen (Item) <= size_t'Last - Offset - and then Strlen (Item) + Offset <= Str'Length, + and then Str'Length <= size_t'Last - Offset + and then Str'Length + Offset <= Strlen (Item), Global => (In_Out => C_Memory); Update_Error : exception; -- GitLab