From owner-freebsd-bugs Thu Aug 26 8:40: 6 1999 Delivered-To: freebsd-bugs@freebsd.org Received: from freefall.freebsd.org (freefall.FreeBSD.ORG [204.216.27.21]) by hub.freebsd.org (Postfix) with ESMTP id 291C314E21 for ; Thu, 26 Aug 1999 08:40:01 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.9.3/8.9.2) id IAA62122; Thu, 26 Aug 1999 08:40:01 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: from exit.com (exit-gw.power.net [207.151.46.196]) by hub.freebsd.org (Postfix) with ESMTP id 6E77314DC5 for ; Thu, 26 Aug 1999 08:30:45 -0700 (PDT) (envelope-from frank@exit.com) Received: from realtime.exit.com (realtime.exit.com [206.223.0.5]) by exit.com (8.9.3/8.9.3) with ESMTP id IAA52803 for ; Thu, 26 Aug 1999 08:30:04 -0700 (PDT) (envelope-from frank@exit.com) Received: (from frank@localhost) by realtime.exit.com (8.9.3/8.9.1) id IAA18219; Thu, 26 Aug 1999 08:30:04 -0700 (PDT) (envelope-from frank) Message-Id: <199908261530.IAA18219@realtime.exit.com> Date: Thu, 26 Aug 1999 08:30:04 -0700 (PDT) From: Frank.Mayhar@exit.com Reply-To: frank@exit.com To: FreeBSD-gnats-submit@freebsd.org X-Send-Pr-Version: 3.2 Subject: bin/13397: vi can mishandle tags files. Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org >Number: 13397 >Category: bin >Synopsis: nvi mishandles tags files under certain conditions. >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Thu Aug 26 08:40:01 PDT 1999 >Closed-Date: >Last-Modified: >Originator: Frank Mayhar >Release: FreeBSD 3.2-STABLE i386 >Organization: exit.com >Environment: 3.2-stable. >Description: The code in ex/ex_tag.c replaces the / it just removed before it stats the directory; it should wait until after it does the stat. >How-To-Repeat: Honestly, I don't remember. I think it has to do with multiple tags files, but it's a real bug. >Fix: Here's a patch: Index: ex_tag.c =================================================================== RCS file: /cvs/repos/src/contrib/nvi/ex/ex_tag.c,v retrieving revision 1.2 diff -c -r1.2 ex_tag.c *** ex_tag.c 1997/04/18 23:36:43 1.2 --- ex_tag.c 1999/06/25 20:59:29 *************** *** 1339,1349 **** stat(name, &sb) && (p = strrchr(tfp->name, '/')) != NULL) { *p = '\0'; len = snprintf(buf, sizeof(buf), "%s/%s", tfp->name, name); - *p = '/'; if (stat(buf, &sb) == 0) { *dirp = tfp->name; *dlenp = strlen(*dirp); } } } --- 1339,1349 ---- stat(name, &sb) && (p = strrchr(tfp->name, '/')) != NULL) { *p = '\0'; len = snprintf(buf, sizeof(buf), "%s/%s", tfp->name, name); if (stat(buf, &sb) == 0) { *dirp = tfp->name; *dlenp = strlen(*dirp); } + *p = '/'; } } >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message