[patch, libfortran] PR34560 Regression 4.3: I/O internal read: END expected, but no failure
Jerry DeLisle
jvdelisle@verizon.net
Wed Dec 26 03:48:00 GMT 2007
Jerry DeLisle wrote:
> Hi Folks,
>
> This patch adds in the needed checks which I left out when fixing
> pr31501. It is straight forward and I will commit this evening with the
> test case in the PR.
>
> Regression tested on x86-64.
>
> Jerry
>
> 2007-12-25 Jerry DeLisle <jvdelisle@gcc.gnu.org>
>
> * io/transfer.c (read_sf): Check if readlen was less than the requested
> number of bytes to read and if so, generate error.
>
>
> Index: transfer.c
> ===================================================================
> --- transfer.c (revision 131155)
> +++ transfer.c (working copy)
> @@ -166,7 +166,14 @@ read_sf (st_parameter_dt *dtp, int *leng
> {
> readlen = *length;
> q = salloc_r (dtp->u.p.current_unit->s, &readlen);
> - memcpy (p, q, readlen);
> + if (readlen < *length)
> + {
> + generate_error (&dtp->common, LIBERROR_END, NULL);
> + return NULL;
> + }
> +
> + if (q != NULL)
> + memcpy (p, q, readlen);
> goto done;
> }
>
>
Committed: r131177
Jerry
More information about the Fortran
mailing list