Home All Groups Group Topic Archive Search About

Re: Working app suddenly breaking. Changes to System.Xml.dll?

Author
17 Nov 2004 11:08 PM
CLL
Hi Zafar -

Would it be possible for you to post the KB article number for this QFE so
that we can request it?



Show quote
"Zafar Abbas [MSFT]" wrote:

> This is a problem that was introduced by a bug fix made between version 1.1
> and SP1. Affected customers can contact PSS and request a QFE if this
> problem severely affects their business cases.
>
> "Andrew Vardeman" <andr***@iastate.edu> wrote in message
> news:e0T6DaMpEHA.2272@TK2MSFTNGP10.phx.gbl...
> > Hi all.
> >
> > Recent Windows updates seem to have broken our application.  It used to
> > run fine but now fails with XmlExceptions when loading a document.
> > We've narrowed the problem to the following:
> >
> > We create an XmlTextReader by passing an instance of our own subclass of
> > FileStream.  Our subclass is called "ObfuscatingFileStream," and it
> > overrides the Read and Write methods by shifting bits to discourage our
> > users from hand-editing our documents.  Here are the methods:
> >
> > //------------------------------------------------------------
> >
> > public override int Read(byte[] array, int offset, int count){
> > int bytesRead = base.Read(array, offset, count);
> > for(int i = 0; i < count; i++){
> > byte b = array[i];
> > array[i] = (byte)((b&128)/128 + (b << 1));
> > }
> > return bytesRead;
> > }
> >
> > public override void Write(byte[] array,int offset,int count){
> > for(int i = 0; i < count; i++){
> > byte b = array[i];
> > array[i] = (byte)(128*(b&1) + (b >> 1));
> > }
> > base.Write(array, offset, count);
> > }
> >
> >
> > //------------------------------------------------------------
> >
> > This code worked fine until very recently, when users started to
> > complain that they could no longer open documents in our app.  They get
> > random XmlExceptions.  Uninstalling the .NET Framework and reinstalling
> > from the .NET developer 1.1 redistributable always fixes the problem...
> > temporarily.  Then in a few days it's broken again.  I suspect Windows
> > Update.
> >
> > So my supervisor has discovered that replacing "count" in the for loop
> > of the read method with "bytesRead" fixes our problem.
> >
> > But why?  What recent change has been made to .NET's XML readers that
> > suddenly makes the *unused* portion of the buffer significant?  Why on
> > earth should it matter whether we change bytes after array[bytesRead]?
> >
> > Thanks for any help,
> >
> > Andrew
>
>
>

AddThis Social Bookmark Button