This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libfortran/23321] Direct unformatted read beyond EOF cores


------- 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]