On Mon, 15 May 2000, Ulf Jaenicke-Roessler wrote:

> Starting program: /home/ujr/texinfo-4.0/info/./ginfo mp3asm
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0x400a9b3c in free () from /lib/libc.so.6
> (gdb) bt
> #0  0x400a9b3c in free () from /lib/libc.so.6
> #1  0x400a9aed in free () from /lib/libc.so.6
> #2  0x8053886 in clean_manpage (
>     manpage=0x8071320 "ndocumented.7V

Does the following patch solve the problem?


2000-05-15  Eli Zaretskii  <[EMAIL PROTECTED]>

        * info/man.c (clean_manpage): Don't write to newpage[-1].

--- info/man.c~0        Mon Jul  5 23:43:22 1999
+++ info/man.c  Mon May 15 23:56:18 2000
@@ -397,7 +397,11 @@ clean_manpage (manpage)
           newline_count--;
         }
 
-      if (manpage[i] == '\b' || manpage[i] == '\f')
+      /* A malformed man page could have a \b as its first character,
+        in which case decrementing j by 2 will cause us to write into
+        newpage[-1], smashing the hidden info stored there by malloc,
+        with obvious consequences... */
+      if ((manpage[i] == '\b' || manpage[i] == '\f') && j > 0)
         j -= 2;
     }
 

Reply via email to