[Pkg-kbd-devel] Bug#951150: kbd: psfaddtable: wrong output for maps containing sequences followed by non-sequences
Thorsten Glaser
tg at mirbsd.de
Tue Feb 11 19:14:15 GMT 2020
Package: kbd
Version: 2.0.4-4
Severity: minor
Tags: upstream
With a Unicode map containing a line like this…
0xFF U+23B5 U+1234,U+5678 U+CAFE
… (of course, the codepoints are only examples) which follows
the format specification in kbd-2.0.4/src/psfxtable.c, the output
is wrong:
00001790 b5 23 fe ff 34 12 78 56 fe ca ff ff |.#..4.xV....|
This is the output for…
0xFF U+23B5 U+1234,U+5678,U+CAFE
… while expected would have been:
00001790 b5 23 fe ca fe ff 34 12 78 56 ff ff |.#....4.xV..|
This is caused by parse_itab_line() around lines 198‥204 not
checking if the current element is a sequnce or not first,
and blindly adding/mixing sequences and non-sequences to the
uclistheads, by using addpair() also for sequences, combined
with kbd-2.0.4/src/psffontop.c (which incidentally duplicates
addpair et al.) writepsffont, around lines 490‥500, not sorting
the codepoints before the sequences.
I discovered this during creating an independent PSF version 1
writer implementation. Mine basically goes through the map for
a given fontpos twice, first outputting every entry without a
comma, then every entry with.
Proof:
tglase at tglase-nb:/tmp $ tail -1 x.map
0xFF U+23B5 U+1234,U+5678 U+CAFE
tglase at tglase-nb:/tmp $ psfaddtable /usr/share/consolefonts/mirf16v8.psf x.map x.psfu
tglase at tglase-nb:/tmp $ psfgettable x.psfu | tail -1
0x0ff U+23b5 U+1234, U+5678, U+cafe
tglase at tglase-nb:/tmp $ bdfctool -dp x.map <FixedMisc/mirf16v8.bdf >x.psfu
tglase at tglase-nb:/tmp $ psfgettable x.psfu | tail -1
0x0ff U+23b5 U+cafe U+1234, U+5678
-- System Information:
Debian Release: bullseye/sid
APT prefers buildd-unstable
APT policy: (500, 'buildd-unstable'), (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 5.4.0-3-amd64 (SMP w/2 CPU cores)
Locale: LANG=C, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE=C (charmap=UTF-8)
Shell: /bin/sh linked to /bin/lksh
Init: sysvinit (via /sbin/init)
Versions of packages kbd depends on:
ii libc6 2.29-10
Versions of packages kbd recommends:
ii console-setup 2:11
kbd suggests no packages.
-- no debconf information
More information about the Pkg-kbd-devel
mailing list