Opened 14 years ago

Closed 4 years ago

Last modified 4 years ago

#25732 closed defect (fixed)

nvi-1.81.6: error in .exrc causes nex/nvi to segfault in tputs() on startup

Reported by: geekosaur Owned by: tobypeterson
Priority: Low Milestone:
Component: ports Version: 1.9.1
Keywords: Cc:
Port: nvi

Description

If there is an error in the .exrc file on startup, both nex and nvi segfault in tputs() called from cl_screen(). I have observed this on OSX Intel (both 10.5 and 10.6, both 32 and 64 bit) but not on PPC (G4 mini) or non-OSX Intel (I use the same version of nvi on FreeBSD and Linux). This bug was also in 1.79 for OSX Intel, but again did not happen on PPC OSX or non-OSX Intel.

(The easiest way to trigger it is to have vim-specific commands or settings in .exrc, so it would have become known fairly quickly to anyone using nvi on Linux if it were a general problem as opposed to specific to OSX.)

Stack backtrace (10.6, x86-64) follows.

Change History (4)

comment:1 Changed 14 years ago by geekosaur

(gdb) where
#0  0x00000001000d55e7 in tputs ()
#1  0x000000010000396b in cl_screen (sp=0x100811800, flags=1) at ./../cl/cl_screen.c:115
#2  0x0000000100031c10 in ex_init (sp=0x100811800) at ./../ex/ex_util.c:132
#3  0x0000000100063db3 in vs_msg (sp=0x100811800, mtype=M_ERR, line=0x10083ee00 "/Users/allbery/.exrc, 3: set: no background option: 'set all' gives all option values\n", len=86) at ./../vi/vs_msg.c:281
#4  0x000000010003d837 in msgq (sp=0x100811800, mt=M_ERR, fmt=0x100080a74 "set: no %s option: 'set all' gives all option values") at ./../common/msg.c:355
#5  0x000000010003da03 in msgq_str (sp=0x100811800, mtype=M_ERR, str=0x1003025d0 "background", fmt=0x100080a70 "033|set: no %s option: 'set all' gives all option values") at ./../common/msg.c:405
#6  0x000000010003d984 in msgq_wstr (sp=0x100811800, mtype=M_ERR, str=0x1003025d0 "background", fmt=0x100080a70 "033|set: no %s option: 'set all' gives all option values") at ./../common/msg.c:382
#7  0x00000001000432b1 in opts_nomatch (sp=0x100811800, name=0x1003025d0 "background") at ./../common/options.c:1076
#8  0x00000001000409f6 in opts_set (sp=0x100811800, argv=0x1003024e0, usage=0x10007c8a0 "se[t] [option[=[value]]...] [nooption ...] [option? ...] [all]") at ./../common/options.c:523
#9  0x0000000100026a58 in ex_set (sp=0x100811800, cmdp=0x1003000d0) at ./../ex/ex_set.c:39
#10 0x0000000100014093 in ex_cmd (sp=0x100811800) at ./../ex/ex.c:1380
#11 0x0000000100020597 in ex_exrc (sp=0x100811800) at ./../ex/ex_init.c:214
#12 0x000000010003bebc in editor (wp=0x100300080, argc=0, argv=0x7fff5fbfeeb8) at ./../common/main.c:272
#13 0x00000001000023c6 in main (argc=1, argv=0x7fff5fbfeeb0) at ./../cl/cl_main.c:121
(gdb) l
110			/*
111			 * If doing an ex screen for ex mode, move to the last line
112			 * on the screen.
113			 */
114			if (F_ISSET(sp, SC_EX) && clp->cup != NULL)
115				tputs(tgoto(clp->cup,
116				    0, O_VAL(sp, O_LINES) - 1), 1, cl_putchar);
117		} else {
118			if (cl_vi_init(sp))
119				return (1);

comment:2 Changed 13 years ago by jmroot (Joshua Root)

Cc: toby@… removed
Owner: changed from macports-tickets@… to toby@…

comment:3 Changed 4 years ago by tobypeterson

Resolution: fixed
Status: newclosed

In df68c1b72c11d8b2020206f32b2ffc561771b87d/macports-ports (master):

nvi: add missing includes that cause crashes
fixes #25732

comment:4 Changed 4 years ago by tobypeterson

Hey, less than 10 years for a fix!

Note: See TracTickets for help on using tickets.