FreeBSD src
Go to file
Kyle Evans adeebf4cd4 regex(3): Interpret many escaped ordinary characters as EESCAPE
In IEEE 1003.1-2008 [1] and earlier revisions, BRE/ERE grammar allows for
any character to be escaped, but "ORD_CHAR preceded by an unescaped
<backslash> character [gives undefined results]".

Historically, we've interpreted an escaped ordinary character as the
ordinary character itself. This becomes problematic when some extensions
give special meanings to an otherwise ordinary character
(e.g. GNU's \b, \s, \w), meaning we may have two different valid
interpretations of the same sequence.

To make this easier to deal with and given that the standard calls this
undefined, we should throw an error (EESCAPE) if we run into this scenario
to ease transition into a state where some escaped ordinaries are blessed
with a special meaning -- it will either error out or have extended
behavior, rather than have two entirely different versions of undefined
behavior that leave the consumer of regex(3) guessing as to what behavior
will be used or leaving them with false impressions.

This change bumps the symbol version of regcomp to FBSD_1.6 and provides the
old escape semantics for legacy applications, just in case one has an older
application that would immediately turn into a pumpkin because of an
extraneous escape that's embedded or otherwise critical to its operation.

This is the final piece needed before enhancing libregex with GNU extensions
and flipping the switch on bsdgrep.

[1] http://pubs.opengroup.org/onlinepubs/9699919799.2016edition/

PR:		229925 (exp-run, courtesy of antoine)
Differential Revision:	https://reviews.freebsd.org/D10510
2020-07-29 23:21:56 +00:00
bin ps(1): Fix formatting of the "command" field for kernel threads. 2020-07-28 15:26:19 +00:00
cddl - Cleanups related to sparc64 removal. 2020-07-28 10:58:37 +00:00
contrib regex(3): Interpret many escaped ordinary characters as EESCAPE 2020-07-29 23:21:56 +00:00
crypto sshd: allow UseBlocklist alias for UseBlacklist 2020-07-29 00:34:24 +00:00
etc - Cleanups related to sparc64 removal. 2020-07-28 10:58:37 +00:00
gnu Remove now-unused GNU as build infrastructure 2020-06-07 13:53:23 +00:00
include Make CLOCK_REALTIME and TIMER_ABSTIME available for XOPEN_SOURCE >= 500. 2020-07-14 20:23:27 +00:00
kerberos5 Update Makefile.depend files 2019-12-11 17:37:53 +00:00
lib regex(3): Interpret many escaped ordinary characters as EESCAPE 2020-07-29 23:21:56 +00:00
libexec Load ipfilter, ipnat, and ippool rules, and start ipmon in a vnet jail. 2020-07-23 17:39:45 +00:00
release - Cleanups related to sparc64 removal. 2020-07-28 10:58:37 +00:00
rescue - Cleanups related to sparc64 removal. 2020-07-28 10:58:37 +00:00
sbin - Cleanups related to sparc64 removal. 2020-07-28 10:58:37 +00:00
secure Replace OPENSSL_NO_SSL3_METHODs with dummies 2020-07-01 00:59:28 +00:00
share add link to crypto(7) page, and drop a link to unrelated crypt(3) page.. 2020-07-29 21:15:06 +00:00
stand loader: Avoid -Wpointer-to-int cast warnings for Arm and RISC-V 2020-07-26 18:17:36 +00:00
sys Add support for ext_pgs mbufs to nfsrvd_readdir() and nfsrvd_readdirplus(). 2020-07-29 22:58:08 +00:00
targets Add WITH_CLANG_FORMAT option 2020-06-24 17:03:42 +00:00
tests Limit gmirror failpoint tests to the test worker 2020-07-23 23:29:50 +00:00
tools add script to help figure out what man pages need MLINKS updated... 2020-07-16 23:05:18 +00:00
usr.bin Add my entry to the calendar file 2020-07-29 11:19:57 +00:00
usr.sbin When modifying LUN pass "special" options too. 2020-07-28 22:32:50 +00:00
.arcconfig callsign isn't required anymore 2016-09-29 06:19:45 +00:00
.arclint arc lint: ignore /tests/ in chmod 2017-12-19 03:38:06 +00:00
.cirrus.yml Cirrus-CI: increase timeout to 120m 2020-02-19 15:56:40 +00:00
.clang-format Clang-format: Avoid hardcoded LLVM include-order style 2020-06-24 23:22:36 +00:00
.gitattributes Add a basic clang-format configuration file 2019-06-07 15:23:52 +00:00
.gitignore .gitignore: Add LINT kernel configurations generated into SRCDIR 2019-08-10 18:22:22 +00:00
COPYRIGHT Happy New Year 2020! 2019-12-31 16:01:36 +00:00
LOCKS LOCKS: update current locks 2018-06-09 03:08:04 +00:00
MAINTAINERS Update bhyve maintainers. 2020-06-26 06:11:50 +00:00
Makefile Use universe-toolchain config(8) 2020-04-29 02:18:39 +00:00
Makefile.inc1 Add WITH_CLANG_FORMAT option 2020-06-24 17:03:42 +00:00
Makefile.libcompat Stop building libl and liby 2020-03-26 08:23:09 +00:00
Makefile.sys.inc AUTO_OBJ: For all top-level targets enforce using an OBJDIR. 2017-12-05 21:29:47 +00:00
ObsoleteFiles.inc devstat(9): Update the man page to reflect the current implementation 2020-07-17 22:15:02 +00:00
README README: add generic notes about GENERIC and NOTES 2018-06-17 19:44:24 +00:00
README.md README: add generic notes about GENERIC and NOTES 2018-06-17 19:44:24 +00:00
RELNOTES Add a RELNOTES entry for r363253. 2020-07-16 15:12:52 +00:00
UPDATING Add a note regarding the introduction of the new bc and dc implementations 2020-07-05 14:43:14 +00:00

FreeBSD Source:

This is the top level of the FreeBSD source directory. This file was last revised on: FreeBSD

FreeBSD is an operating system used to power modern servers, desktops, and embedded platforms. A large community has continually developed it for more than thirty years. Its advanced networking, security, and storage features have made FreeBSD the platform of choice for many of the busiest web sites and most pervasive embedded networking and storage devices.

For copyright information, please see the file COPYRIGHT in this directory. Additional copyright information also exists for some sources in this tree - please see the specific source directories for more information.

The Makefile in this directory supports a number of targets for building components (or all) of the FreeBSD source tree. See build(7), config(8), https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html, and https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html for more information, including setting make(1) variables.

Source Roadmap:

bin		System/user commands.

cddl		Various commands and libraries under the Common Development
		and Distribution License.

contrib		Packages contributed by 3rd parties.

crypto		Cryptography stuff (see crypto/README).

etc		Template files for /etc.

gnu		Various commands and libraries under the GNU Public License.
		Please see gnu/COPYING* for more information.

include		System include files.

kerberos5	Kerberos5 (Heimdal) package.

lib		System libraries.

libexec		System daemons.

release		Release building Makefile & associated tools.

rescue		Build system for statically linked /rescue utilities.

sbin		System commands.

secure		Cryptographic libraries and commands.

share		Shared resources.

stand		Boot loader sources.

sys		Kernel sources.

sys/<arch>/conf Kernel configuration files. GENERIC is the configuration
		used in release builds. NOTES contains documentation of
		all possible entries.

tests		Regression tests which can be run by Kyua.  See tests/README
		for additional information.

tools		Utilities for regression testing and miscellaneous tasks.

usr.bin		User commands.

usr.sbin	System administration commands.

For information on synchronizing your source tree with one or more of the FreeBSD Project's development branches, please see:

https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/current-stable.html