[vdr] VDR 1.5.12 & text2skin: how to compile?

Reinhard Nissl rnissl at gmx.de
Mon Dec 31 21:43:25 CET 2007


Hi,

VDR User schrieb:

> Also, there appears to be a problem with text2skin although it still
> works fine.  If anyone cares to have a look and possibly fix it,
> that'd be great!
> 
> The problem:
> 
> Stopping: VDR
> *** glibc detected *** ./vdr: double free or corruption (fasttop):
> 0x0b1ba848 ***
> ======= Backtrace: =========
> /lib/libc.so.6[0xb7c94ac5]
> /lib/libc.so.6(cfree+0x90)[0xb7c98570]
> ./PLUGINS/lib/libvdr-text2skin.so.1.5.12(_ZN14cText2SkinI18nD0Ev+0x5f)[0xb746405f]
> ======= Memory map: ========
> 08048000-08183000 r-xp 00000000 03:03 833366
> /usr/local/dvb/vdr.source/vdr-1.5.12/vdr
> 08183000-0818c000 rw-p 0013a000 03:03 833366
> /usr/local/dvb/vdr.source/vdr-1.5.12/vdr
> 0818c000-0b973000 rw-p 0818c000 00:00 0          [heap]

The problem is that text2skin's i18n.c uses the old structure
tI18nPhrase which contains only 22 text entries, but iterates over
I18nLanguages()->Size() entries -- and in my case, Size() returns 23, so
cText2SkinI18n::Parse() will overwrite stack variables and finally cause
the above double free.

As a quick workaround, modify VDR's i18n.h, e. g. like that:

typedef const char *tI18nPhrase[4*22]; ///< obsolete - switch to 'gettext'!

Bye.
-- 
Dipl.-Inform. (FH) Reinhard Nissl
mailto:rnissl at gmx.de



More information about the vdr mailing list