Bug#760768: libfontenc1: outdated zlib1g Depends (causing xfonts-utils mkfontscale Segmentation fault crash)
Package: libfontenc1
Version: 1:1.1.2-1
Hi,
during some updates / reinstalls of xfonts-unifont, I saw
Setting up xfonts-unifont (1:6.3.20140214-1) ...
Segmentation fault
Turned out that the inner command which segfaulted is:
mkfontscale -b -s -l -e /usr/share/fonts/X11/encodings -e /usr/share/fonts/X11/
which crashes in some libfontenc1 code:
(gdb) run
Starting program: /usr/bin/mkfontscale -e .
warning: Could not load shared library symbols for linux-gate.so.1.
Do you need "set solib-search-path" or "set sysroot"?
Breakpoint 1, FontEncIdentify (fileName=0x8050008 "./.")
at ../../src/encparse.c:906
906 {
(gdb) n
912 if((f = FontFileOpen(fileName))==NULL) {
(gdb)
915 encoding = parseEncodingFile(f, 1);
(gdb) s
parseEncodingFile (f=f@entry=0x80583c8, headerOnly=headerOnly@entry=1)
at ../../src/encparse.c:462
462 {
(gdb) n
465 unsigned short *enc=NULL;
(gdb)
467 unsigned i, first = 0xFFFF, last=0, encsize=0, namsize=0;
(gdb)
480 line = getnextline(f);
(gdb) s
getnextline (f=f@entry=0x80583c8) at ../../src/encparse.c:196
196 {
(gdb) n
198 c = FontFileGetc(f);
(gdb) n
196 {
(gdb) n
198 c = FontFileGetc(f);
(gdb) n
Program received signal SIGSEGV, Segmentation fault.
0xb7fb02b6 in getnextline (f=f@entry=0x80583c8) at ../../src/encparse.c:198
198 c = FontFileGetc(f);
(gdb)
Eventually found out that it works on a system with zlib1g 1.2.7.dfsg-13,
yet crashes on a system with 1:1.2.3.4.dfsg-3 .
A simple and successful test is to downgrade a (working) 1.2.7 system
via the 1.2.3.4 package (on my system there fortunately
were no packages installed which had a zlib1g Depends which disallowed that),
and then execute the well-known
mkfontscale -b -s -l -e /usr/share/fonts/X11/encodings -e /usr/share/fonts/X11/
command again, which now ends up crashing rather than previously working.
Not sure what the policy of specifying newer versions is, though
(theoretically you could simply demand "> 1:1.2.3.4.dfsg-3"
to force an update from the non-compatible older zlib1g version,
or alternatively specifically demand ">= 1.2.7.dfsg-13"
which in this case has been proven to be working.
Finally, it's not quite known
what would constitute a sane libfontenc1 code implementation handling here
anyway - after all we're talking of a somewhat weird gzgetc()
of a gzopen() of filename "./.", i.e. the current-dir entry -
this probably would work for regular files but chooses to crash
for a dir entry (in the older zlib1g version, that is).
So perhaps libfontenc1 should be fixed (instead / as well)
to not do such shenanigans...
ii libfontenc1:i386 1:1.1.2-1 i386 X11 font encoding library
ii xfonts-utils 1:7.7+2 i386 X Window System font utility programs
ii zlib1g 1:1.2.3.4.dfsg-3 i386 compression library - runtime
Thanks,
Andreas Mohr
--
GNU/Linux. It's not the software that's free, it's you.
Reply to: