misc/126682: Sed segfaults on error rather than error message
Derek Tattersall
dlt at mebtel.net
Wed Aug 20 14:10:01 UTC 2008
>Number: 126682
>Category: misc
>Synopsis: Sed segfaults on error rather than error message
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Wed Aug 20 14:10:00 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator: Derek Tattersall
>Release: 8.0 CURRENT
>Organization:
>Environment:
FreeBSD oriental.arm.org 8.0-CURRENT FreeBSD 8.0-CURRENT #16: Sun Aug 17 11:41:53 EDT 2008 root at oriental.arm.org:/usr/obj/usr/src/sys/ORIENTAL amd64
>Description:
echo test | sed 's/test/\1/' segfaults rather than issuing a message regarding the nonexistence of what "\1" refers to.
>How-To-Repeat:
echo test | sed 's/test/\1/'
>Fix:
Patch attached with submission follows:
diff -u /usr/src/usr.bin/sed/compile.c ./compile.c
--- /usr/src/usr.bin/sed/compile.c 2008-02-09 04:12:02.000000000 -0500
+++ ./compile.c 2008-08-20 09:47:27.000000000 -0400
@@ -324,13 +324,13 @@
if (p == NULL)
errx(1,
"%lu: %s: unterminated substitute pattern", linenum, fname);
- --p;
- p = compile_subst(p, cmd->u.s);
- p = compile_flags(p, cmd->u.s);
if (*re == '\0')
cmd->u.s->re = NULL;
else
cmd->u.s->re = compile_re(re, cmd->u.s->icase);
+ --p;
+ p = compile_subst(p, cmd->u.s);
+ p = compile_flags(p, cmd->u.s);
EATSPACE();
if (*p == ';') {
p++;
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list