This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libfortran/23321] Direct unformatted read beyond EOF cores
- From: "tkoenig at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 15 Aug 2005 22:12:12 -0000
- Subject: [Bug libfortran/23321] Direct unformatted read beyond EOF cores
- References: <20050811003038.23321.bsp@kithrup.com>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From tkoenig at gcc dot gnu dot org 2005-08-15 22:12 -------
Proposed fix:
Index: transfer.c
===================================================================
RCS file: /cvs/gcc/gcc/libgfortran/io/transfer.c,v
retrieving revision 1.52
diff -c -p -r1.52 transfer.c
*** transfer.c 9 Aug 2005 01:56:04 -0000 1.52
--- transfer.c 15 Aug 2005 22:05:20 -0000
*************** data_transfer_init (int read_flag)
*** 1163,1168 ****
--- 1163,1177 ----
if (g.mode == READING && current_unit->mode == WRITING)
flush(current_unit->s);
+ /* Check whether the record number exists on reading. */
+
+ if (g.mode == READING
+ && ioparm.rec * current_unit->recl > file_length (current_unit->s))
+ {
+ generate_error (ERROR_BAD_OPTION, "Non-existing record number");
+ return;
+ }
+
/* Position the file. */
if (sseek (current_unit->s,
(ioparm.rec - 1) * current_unit->recl) == FAILURE)
Regression testing etc. to follow.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23321