PR fortran/95104 - Segfault on a legal WAIT statement
Referencing a unit in a WAIT statement that has not been opened before resulted in a NULL pointer dereference. Check for this condition. 2020-05-26 Harald Anlauf <anlauf@gmx.de> libgfortran/ PR libfortran/95104 * io/transfer.c (st_wait_async): Do not dereference NULL pointer. gcc/testsuite/ PR libfortran/95104 * gfortran.dg/pr95104.f90: New test. Co-Authored-By: Steven G. Kargl <kargl@gcc.gnu.org>
This commit is contained in:
parent
3bf5e7657b
commit
56f03cd12b
2 changed files with 9 additions and 1 deletions
8
gcc/testsuite/gfortran.dg/pr95104.f90
Normal file
8
gcc/testsuite/gfortran.dg/pr95104.f90
Normal file
|
@ -0,0 +1,8 @@
|
|||
! { dg-do run }
|
||||
! PR libfortran/95104 - Segfault on a legal WAIT statement
|
||||
|
||||
program test
|
||||
wait (10, iostat=ios)
|
||||
if (ios /= 0) stop 1
|
||||
close (10)
|
||||
end program test
|
|
@ -4500,7 +4500,7 @@ void
|
|||
st_wait_async (st_parameter_wait *wtp)
|
||||
{
|
||||
gfc_unit *u = find_unit (wtp->common.unit);
|
||||
if (ASYNC_IO && u->au)
|
||||
if (ASYNC_IO && u && u->au)
|
||||
{
|
||||
if (wtp->common.flags & IOPARM_WAIT_HAS_ID)
|
||||
async_wait_id (&(wtp->common), u->au, *wtp->id);
|
||||
|
|
Loading…
Add table
Reference in a new issue