aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorLaurent GUERBY <laurent@guerby.net>2009-02-25 17:22:58 +0000
committerLaurent Guerby <guerby@gcc.gnu.org>2009-02-25 17:22:58 +0000
commit054efbba9dbf01e8f1b52f01aafa324f57f701ba (patch)
tree26671ab7433ac646c581b90ed5ade64f0c97a80d /gcc/ada
parent2692d7f533975c27643f8a383f8fadc3e944210a (diff)
downloadgcc-054efbba9dbf01e8f1b52f01aafa324f57f701ba.zip
gcc-054efbba9dbf01e8f1b52f01aafa324f57f701ba.tar.gz
gcc-054efbba9dbf01e8f1b52f01aafa324f57f701ba.tar.bz2
a-teioed.adb (Expand): Fix Result overflow.
2009-02-25 Laurent GUERBY <laurent@guerby.net> * a-teioed.adb (Expand): Fix Result overflow. From-SVN: r144427
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/ChangeLog4
-rw-r--r--gcc/ada/a-teioed.adb8
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 826b204..d7d0434 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,7 @@
+2009-02-25 Laurent GUERBY <laurent@guerby.net>
+
+ * a-teioed.adb (Expand): Fix Result overflow.
+
2009-02-25 Laurent GUERBY <laurent@guerby.net>
* gcc-interface/Makefile.in: Fix multilib handling for
diff --git a/gcc/ada/a-teioed.adb b/gcc/ada/a-teioed.adb
index a5c2b66..081cef6 100644
--- a/gcc/ada/a-teioed.adb
+++ b/gcc/ada/a-teioed.adb
@@ -84,6 +84,10 @@ package body Ada.Text_IO.Editing is
-- character has already been made, so a count of one is a
-- no-op, and a count of zero erases a character.
+ if Result_Index + Count - 2 > Result'Last then
+ raise Picture_Error;
+ end if;
+
for J in 2 .. Count loop
Result (Result_Index + J - 2) := Picture (Picture_Index - 1);
end loop;
@@ -98,6 +102,10 @@ package body Ada.Text_IO.Editing is
raise Picture_Error;
when others =>
+ if Result_Index > Result'Last then
+ raise Picture_Error;
+ end if;
+
Result (Result_Index) := Picture (Picture_Index);
Picture_Index := Picture_Index + 1;
Result_Index := Result_Index + 1;