Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 7 Aug 2018 14:47:39 +0000 (UTC)
From:      "Pedro F. Giffuni" <pfg@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r337419 - head/usr.bin/sed
Message-ID:  <201808071447.w77Eld3I069906@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: pfg
Date: Tue Aug  7 14:47:39 2018
New Revision: 337419
URL: https://svnweb.freebsd.org/changeset/base/337419

Log:
  sed(1): partial fix for the case of the regex delimited with '['.
  
  We don't generally support the weird case of regular expresions delimited
  by an opening square bracket ('[') but POSIX says that inside
  bracket expressions, escaping is not possible and both '[' and '\'
  represent themselves.
  
  PR:		230198 (exp-run)
  Obtained from:	OpenBSD

Modified:
  head/usr.bin/sed/compile.c

Modified: head/usr.bin/sed/compile.c
==============================================================================
--- head/usr.bin/sed/compile.c	Tue Aug  7 14:39:00 2018	(r337418)
+++ head/usr.bin/sed/compile.c	Tue Aug  7 14:47:39 2018	(r337419)
@@ -393,11 +393,11 @@ compile_delimited(char *p, char *d, int is_tr)
 			if ((d = compile_ccl(&p, d)) == NULL)
 				errx(1, "%lu: %s: unbalanced brackets ([])", linenum, fname);
 			continue;
+		} else if (*p == '\\' && p[1] == c) {
+			p++;
 		} else if (*p == '\\' && p[1] == '[') {
 			*d++ = *p++;
-		} else if (*p == '\\' && p[1] == c)
-			p++;
-		else if (*p == '\\' && p[1] == 'n') {
+		} else if (*p == '\\' && p[1] == 'n') {
 			*d++ = '\n';
 			p += 2;
 			continue;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201808071447.w77Eld3I069906>