[Quickfix-developers] Re: potential infinite loop in QuickFIX Message constructor
Brought to you by:
orenmnero
From: Oren M. <or...@qu...> - 2004-09-28 16:37:50
|
This has been checked in with an accompanying test case. --oren On Sep 27, 2004, at 3:58 PM, Yihu Fang wrote: > Oren, > > =A0 > > There is a bug in QuickFIX Message constructor which may exists in all=20= > versions. An ill-formatted FIX message can let the constructor run=20 > into a tight infinite loop. If the FIX message has an extra white=20 > space at the end of trailer =938=3DFIX.4.0<SOH>=85<SOH>10=3Dxxx<SOH> = =93, or any=20 > extra characters in that matter, the constructor calls setString() and=20= > results in an infinite loop. > > =A0 > > The fix is to check the value of the equalSign and throw an exception=20= > if not found. The diff of current CVS Message.cpp should be: > > =A0 > > 560a561,562 > > >=A0=A0 if (equalSign =3D=3D std::string::npos) > > >=A0=A0=A0=A0 throw InvalidMessage(); > > =A0 > > Thanks. > > =A0 > > -Yihu > > > ----------------------------------------------------------------- > Visit our Internet site at http://www.reuters.com > > Get closer to the financial markets with Reuters Messaging - for more > information and to register, visit http://www.reuters.com/messaging > > Any views expressed in this message are those of the individual > sender, except where the sender specifically states them to be > the views of Reuters Ltd. > =20= |