PtrList: Check for EOF while reading to avoid run-on and infinite loop when reading list of dictionaries.

Resolves bug-report http://www.openfoam.org/mantisbt/view.php?id=1538
This commit is contained in:
Henry
2015-02-18 08:12:01 +00:00
parent 3482e22bc6
commit b44acdb03e

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -115,6 +115,17 @@ void Foam::PtrList<T>::read(Istream& is, const INew& inewt)
)
{
is.putBack(lastToken);
if (is.eof())
{
FatalIOErrorIn
(
"PtrList<T>::read(Istream&, const INew&)",
is
) << "Premature EOF after reading " << lastToken.info()
<< exit(FatalIOError);
}
sllPtrs.append(inewt(is).ptr());
is >> lastToken;
}