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