aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/libgnat/s-conca3.ads
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2022-06-21 22:17:13 +0200
committerPierre-Marie de Rodat <derodat@adacore.com>2022-07-12 12:24:11 +0000
commit01bf0d6cf53c8c5909f07d89a188b8b1a7a8f179 (patch)
tree5234ef512fd1cddfc6ca723b85c8999af5d8af5b /gcc/ada/libgnat/s-conca3.ads
parent7ce2938ccff9e1cdfcd0ad63d3653dc671335620 (diff)
downloadgcc-01bf0d6cf53c8c5909f07d89a188b8b1a7a8f179.zip
gcc-01bf0d6cf53c8c5909f07d89a188b8b1a7a8f179.tar.gz
gcc-01bf0d6cf53c8c5909f07d89a188b8b1a7a8f179.tar.bz2
[Ada] Fix buffer overrun for small string concatenation at -O0
The concatenation routines may read too much data on the source side when the destination buffer is larger than the final result. This change makes sure that this does not happen any more and also removes obsolete stuff. gcc/ada/ * rtsfind.ads (RE_Id): Remove RE_Str_Concat_Bounds_N values. (RE_Unit_Table): Remove RE_Str_Concat_Bounds_N entries. * libgnat/s-conca2.ads (Str_Concat_2): Adjust head comment. (Str_Concat_Bounds_2): Delete. * libgnat/s-conca2.adb (Str_Concat_2): Use the length of the last input to size the last assignment. (Str_Concat_Bounds_2): Delete. * libgnat/s-conca3.ads (Str_Concat_3): Adjust head comment. (Str_Concat_Bounds_3): Delete. * libgnat/s-conca3.adb (Str_Concat_3): Use the length of the last input to size the last assignment. (Str_Concat_Bounds_3): Delete. * libgnat/s-conca4.ads (Str_Concat_4): Adjust head comment. (Str_Concat_Bounds_4): Delete. * libgnat/s-conca4.adb (Str_Concat_4): Use the length of the last input to size the last assignment. (Str_Concat_Bounds_4): Delete. * libgnat/s-conca5.ads (Str_Concat_5): Adjust head comment. (Str_Concat_Bounds_5): Delete. * libgnat/s-conca5.adb (Str_Concat_5): Use the length of the last input to size the last assignment. (Str_Concat_Bounds_5): Delete. * libgnat/s-conca6.ads (Str_Concat_6): Adjust head comment. (Str_Concat_Bounds_6): Delete. * libgnat/s-conca6.adb (Str_Concat_6): Use the length of the last input to size the last assignment. (Str_Concat_Bounds_6): Delete. * libgnat/s-conca7.ads (Str_Concat_7): Adjust head comment. (Str_Concat_Bounds_7): Delete. * libgnat/s-conca7.adb (Str_Concat_7): Use the length of the last input to size the last assignment. (Str_Concat_Bounds_7): Delete. * libgnat/s-conca8.ads (Str_Concat_8): Adjust head comment. (Str_Concat_Bounds_8): Delete. * libgnat/s-conca8.adb (Str_Concat_8): Use the length of the last input to size the last assignment. (Str_Concat_Bounds_8): Delete. * libgnat/s-conca9.ads (Str_Concat_9): Adjust head comment. (Str_Concat_Bounds_9): Delete. * libgnat/s-conca9.adb (Str_Concat_9): Use the length of the last input to size the last assignment. (Str_Concat_Bounds_9): Delete.
Diffstat (limited to 'gcc/ada/libgnat/s-conca3.ads')
-rw-r--r--gcc/ada/libgnat/s-conca3.ads11
1 files changed, 2 insertions, 9 deletions
diff --git a/gcc/ada/libgnat/s-conca3.ads b/gcc/ada/libgnat/s-conca3.ads
index d7282ff..2ff3abc 100644
--- a/gcc/ada/libgnat/s-conca3.ads
+++ b/gcc/ada/libgnat/s-conca3.ads
@@ -36,15 +36,8 @@ package System.Concat_3 is
procedure Str_Concat_3 (R : out String; S1, S2, S3 : String);
-- Performs the operation R := S1 & S2 & S3. The bounds of R are known to
- -- be correct (usually set by a call to the Str_Concat_Bounds_3 procedure
- -- below), so no bounds checks are required, and it is known that none of
- -- the input operands overlaps R. No assumptions can be made about the
+ -- be sufficient so no bound checks are required, and it is known that none
+ -- of the input operands overlaps R. No assumptions can be made about the
-- lower bounds of any of the operands.
- procedure Str_Concat_Bounds_3
- (Lo, Hi : out Natural;
- S1, S2, S3 : String);
- -- Assigns to Lo..Hi the bounds of the result of concatenating the three
- -- given strings, following the rules in the RM regarding null operands.
-
end System.Concat_3;