diff options
author | Laurent GUERBY <laurent@guerby.net> | 2009-02-25 17:22:58 +0000 |
---|---|---|
committer | Laurent Guerby <guerby@gcc.gnu.org> | 2009-02-25 17:22:58 +0000 |
commit | 054efbba9dbf01e8f1b52f01aafa324f57f701ba (patch) | |
tree | 26671ab7433ac646c581b90ed5ade64f0c97a80d | |
parent | 2692d7f533975c27643f8a383f8fadc3e944210a (diff) | |
download | gcc-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
-rw-r--r-- | gcc/ada/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/ada/a-teioed.adb | 8 |
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; |