Package: xfstt
Version: 1.6-3
Severity: normal
Tags: patch

When xfstt is asked for FS_ListFontsWithXInfo it returns an
FSBadImplementation error. This is not allowed according to the
specs, and causes the application that triggered the
ListFontsWithXInfo to hang.

The easy fix for this problem is changing
#if 0
in xfstt.cc:1345 to
#if 1

This causes xfstt to return an empty list in this case, which works
well and is OK with the spec. Another possibility would be to return
FSBadAlloc, which would also be OK according to the spec.
Unfortunately error xfree86 doesn't seem to handle this case
(violating the spec itself, cf. fs_wakeup(), err from
fs_read_list_info() is never really checked there).

The bug can be triggered by a call to XCreateFontSet(). I hit the
bug by starting ion3 under an UTF-8 locale, in which case it calls
XCreateFontSet().

Steps to reproduce:
================ START ================ 
host # locale
>>> [EMAIL PROTECTED]
>>> [EMAIL PROTECTED]
>>> LC_NUMERIC="[EMAIL PROTECTED]"
>>> LC_TIME=en_US.UTF8
>>> LC_COLLATE="[EMAIL PROTECTED]"
>>> LC_MONETARY="[EMAIL PROTECTED]"
>>> LC_MESSAGES=en_US.UTF8
>>> LC_PAPER="[EMAIL PROTECTED]"
>>> LC_NAME="[EMAIL PROTECTED]"
>>> LC_ADDRESS="[EMAIL PROTECTED]"
>>> LC_TELEPHONE="[EMAIL PROTECTED]"
>>> LC_MEASUREMENT="[EMAIL PROTECTED]"
>>> LC_IDENTIFICATION="[EMAIL PROTECTED]"
>>> LC_ALL=
host # mkdir xfstt-chroot
host # debootstrap sid xfstt-chroot http://ftp.debian.org/debian/
host # mount -t proc proc xfstt-chroot/proc
host # mount -t devpts devpts xfstt-chroot/dev/pts
host # # just entries for sid
host # cp /etc/apt/sources.list xfstt-chroot/etc/apt/sources.list
host # chroot xfstt-chroot /bin/bash
chroot # apt-get update
chroot # apt-get install xfstt ion3 tightvncserver x-window-system locales
chroot # vi /etc/X11/XF86Config-4
< insert '''FontPath    "unix/:7101"''' just below "unix/:7100" >
chroot # adduser xyz
chroot # su xyz
chroot $ cd ~
chroot $ mkdir .vnc
chroot $ echo "exec ion3" > .vnc/xstartup
chroot $ chmod 755 .vnc/xstartup
chroot $ vncserver :1  # use whatever display is free
================  END  ================ 

ion3 then hangs, waiting for a reply from the xserver.
I'm sure the bug is in xfstt and not in tightvnc (which uses the
xfree86 code internally) or ion3 because 
* ion3 doesn't do any special magic, the XCreateFontSet call is
  pretty streight-forward.
* the crash happens too when ion3 is started under xfree86 under a
  UTF-8 locale.
* xfstt violates the X Font Server Protocol and the xserver doesn't
  check for that violation.

Enabling UTF-8 serves no other purpose then to activate that special
code-path that leads to XCreateFontSet().

Cheers,
Greek0

-- System Information:
Debian Release: 3.1
  APT prefers unstable
  APT policy: (990, 'unstable'), (500, 'testing')
Architecture: i386 (i686)
Kernel: Linux 2.6.8r20050324
Locale: [EMAIL PROTECTED], [EMAIL PROTECTED] (charmap=UTF-8)

Versions of packages xfstt depends on:
ii  debconf                     1.4.46       Debian configuration management sy
ii  libc6                       2.3.2.ds1-20 GNU C Library: Shared libraries an
ii  libgcc1                     1:3.4.3-12   GCC support library
ii  libstdc++5                  1:3.3.5-12   The GNU Standard C++ Library v3

-- debconf information:
  xfstt/fonts_not_provided:
* xfstt/default_port_changed:
  xfstt/listen_tcp: false

Attachment: signature.asc
Description: Digital signature

Reply via email to