#5  export_troff (bytes=0xffffd438, cv=0x56564ae0) at codec/export.c:1056


Dear Maintainer,
this crash happens because the array ansi2troff has
just 16 values, but gets accessed at value 32.
This value 32 originates from the constant CACA_TRANSPARENT.

With the below patch the crash could be avoided.

Kind regards,
Bernhard


https://sources.debian.org/src/libcaca/0.99.beta20-3/caca/codec/export.c/#L1056
1056                 cur += sprintf(cur, "\\M[%s]", ansi2troff[bg]);



--- libcaca-0.99.beta20.orig/caca/codec/export.c
+++ libcaca-0.99.beta20/caca/codec/export.c
@@ -1052,7 +1052,7 @@ static void *export_troff(caca_canvas_t
if(fg != prevfg || !started)
                 cur += sprintf(cur, "\\m[%s]", ansi2troff[fg]);
-            if(bg != prevbg || !started)
+            if((bg != prevbg || !started) && bg != CACA_TRANSPARENT)
                 cur += sprintf(cur, "\\M[%s]", ansi2troff[bg]);
             if(lineattr[x] & CACA_BOLD)
                 cur += sprintf(cur, "\\fB");




benutzer@debian:~$ toilet -E troff foo
.nf
\m[black]
   m""
 mm#mm   mmm    mmm
   #    #" "#  #" "#
   #    #   #  #   #
   #    "#m#"  "#m#"
benutzer@debian:~$

Reply via email to