Re: gdk_selection.c:sanitize_ctext is broken in 1.2.9



On 13 Mar 2001, Owen Taylor wrote:

> 
> Vlad Harchev <hvv hippo ru> writes:
> 
> >  Hi,
> > 
> >  Users say that there are problems with russian strings in window titles under
> > XFree-4.0.2 and gtk-1.2.9 (I don't have XF-4.0.2 so I can't describe them) - I
> > was told that it's somehow severely corrupted. I guess same problems will
> > appear for any other non-latin1 locale.
> >  The problem is in newly-introduced sanitize_ctext function. 
> > 
> >  Here is a hackish patch that fixes the problem for russian (it's not mine),
> > but it has (as Aleksey Novodvorsky <aen logic ru>, the author of the patch, 
> > says) a problem of not filtering out some escape sequences that are
> > introduced by some very old XFree servers:
> > 
> > diff -ur gtk+-1.2.9.orig/gdk/gdkselection.c gtk+-1.2.9/gdk/gdkselection.c
> > --- gtk+-1.2.9.orig/gdk/gdkselection.c  Tue Feb 20 19:44:22 2001
> > +++ gtk+-1.2.9/gdk/gdkselection.c       Sun Mar  4 15:26:05 2001
> > @@ -222,7 +222,9 @@
> >        else if (c == '\n' || c == '\t' || c == 27 /* ESC */ ||
> >                (c >= 32 && c <= 127) || /* GL */
> >                c == 155 /* CONTROL SEQUENCE INTRODUCER */ ||
> > -              (c >= 160 && c <= 255)) /* GR */
> > +              (c >= 160 && c <= 255) /* GR */ ||
> > +              (c >= 128 && c <= 150) /* charset length  */ ||
> > +              c == 2 /* end of non-standard encoding sequence */)
> >         {
> >           result[out_length++] = c;
> >         }
> 
> OK, looking again at the Xlib code and the CTEXT spec, it appears that
> the CTEXT spec was at some point extended to accomodate this (section
> 6) but the initial section that describes what characters are allowed
> was never updated :-(.
> 
> Unfortunately, according to the spec, anything is allowed in an
> extended segment, including all of C0 and C1, so probably we need to
> add explicit recognition of extended segments to sanitize_ctext().
> 
> Or, since since sanitize_ctext is only a workaround for buggy Xlib
> (like XFree86 3.x, etc), I suppose the patch to add it could just be
> backed out.
> 
> >  I have been told that complete description of escape sequences supported by
> > XFree is only available in russian though. Ivan Pascal <pascal info tsu ru> is
> > the author of that documentation, and I hope that he will help to explain how
> > to rewrite sanize_ctext in order to be correct. 
> 
> I almost think that I need to learn Russian because Ivan has produced
> all this great documentation about Xkb and CText and so forth that I
> can't read! ;-)
> 
> But actually, the code in Xlib appears to correspond pretty well with
> the CTEXT spec in the X distribution, and Bruno Haible has even
> updated the CTEXT spec a bit recently to make the correspondence
> closer.
> 
> >  It would be nice if this issue was fixed before 1.2.10 release..
> 
> I'll make sure that happens.

 Thanks you for this.

 I want to add that I just tried gtk+-1.2.9 and found that I can't cut and
paste russian to/from any gtk widget due to brokeness of sanitize_ctext! That
hackish patch fixes the problem. So the problem should be definitely fixed!

 Also small addition: by the "old XFree servers" ANY XFree with version <=
4.0.1 was ment in my mail.

 Thanks..
 
> Regards,
>                                         Owen
> 

 Best regards,
  -Vlad





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]