[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug in gnuplot in the pslatex.trm still exists :-(

Dear gnuplot developers,

I'm very amused, that the old bug, which I've found ca one year ago (and
reported to you) still exists.
Below I attach my bug report. The line numbers has changed in the new
version, but the bug's nature and the cure is still the same.
I attach the gnuplot_bug.tgz file, which demonstrates the problem.
It is really tiring to change the gnuplot source and recompile it after each
upgrade :-(.

Below follows the bug description and the fix: 

Subject: SOLVED !!! Problems with "pslatex" terminal in gnuplot beta347 (pre3.6) in Debian Linux 2.0 (hamm)
From: Wojciech Zabolotny;wzab@ipe.pw.edu.pl;
Date: Sun, 2 Aug 1998 01:12:29 +0200
Hi All!
I've just solved the problem desribed in my previous message. 
It was not related to debian. There is really a bug in the gnuplot
source. I've sent my solution to the gnuplot team, but I would like to
forward it to this group too (and to package's mantainer), to allow for
correction of debian gnuplot package.

			Wojtek Zabolotny

---------- Forwarded message ----------
Date: Sun, 2 Aug 1998 01:01:58 +0200 (EEST)
From: Wojciech Zabolotny <wzab@ipe.pw.edu.pl>
To: bug-gnuplot@dartmouth.edu
Subject: Problems with "pslatex" terminal in gnuplot beta347 (pre3.6) in Debian Linux 2.0 (hamm) (SOLVED !!!)

Hello gnuplot developers!

I have performed some additional experiments with the gnuplot, and my
data. I've linked the gnuplot with "electric-fence" library to find the 
instruction which overwrites the memory.
Below I present the output given by gdb after the failure:

gnuplot> set term pstex auxfile
Terminal type set to 'pstex'
Options are 'monochrome dashed rotate auxfile'
gnuplot> set output "phd_w4_s3_l10_wzneur.nsts.tex"
gnuplot> load "phd_w4_s3_l10_wzneur.nsts.gnuplot"

Program received signal SIGSEGV, Segmentation fault.
0x80a7cae in PSLATEX_init () at term/pslatex.trm:204
204                 strcpy(PSLATEX_psfile + (dotIndex-outstr) + 1,"ps");
(gdb) bt
#0  0x80a7cae in PSLATEX_init () at term/pslatex.trm:204
#1  0x808f7ae in term_init () at term.c:325
#2  0x80552b4 in do_plot (plots=0x40120fb8, pcount=3) at graphics.c:1165
#3  0x80779c2 in eval_plots () at plot2d.c:1335
#4  0x80743a7 in plotrequest () at plot2d.c:332
#5  0x804b84f in command () at command.c:539
#6  0x804afd1 in do_line () at command.c:287
#7  0x807209c in load_file (fp=0x4011af98,
    name=0xbffff96c "phd_w4_s3_l10_wzneur.nsts.gnuplot", can_do_args=0)
    at misc.c:1042
#8  0x804bd70 in command () at command.c:624
#9  0x804afd1 in do_line () at command.c:287
#10 0x804af4f in com_line () at command.c:262
#11 0x8073c25 in main (argc=1, argv=0xbffffda0) at plot.c:439

When I've analyzed the source in pslatex.trm, I've found following lines:

PSLATEX_psfile = gp_alloc(dotIndex - outstr + 3, "pslatex aux filename"); 
     if (PSLATEX_psfile) {
        strncpy(PSLATEX_psfile, outstr, dotIndex-outstr+1); /*including .*/
        strcpy(PSLATEX_psfile + (dotIndex-outstr) + 1,"ps");

The problem is, that "strcpy" instruction writes three bytes: 'p','s' and
\0. The last byte is written after the end of PSLATEX_psfile buffer,
overwriting another variable... :-(
I have changed the 201st line in pslatex.trm in the following way:

PSLATEX_psfile = gp_alloc(dotIndex - outstr + 4, "pslatex aux filename");

Now everything works fine ! :-)

					Wojciech Zabolotny
	                      Wojciech M. Zabolotny
	http://www.ise.pw.edu.pl/~wzab  <--> wzab@ise.pw.edu.pl

http://www.gnupg.org  Gnu Privacy Guard - protect your mail & data
                      with the FREE cryptographic system

Attachment: gnuplot.bug.tgz
Description: GNU Unix tar archive

Reply to: