summaryrefslogtreecommitdiffstats
path: root/lib/libc/regex
Commit message (Collapse)AuthorAgeFilesLines
* MFC r317707:brooks2017-05-091-0/+4
| | | | | | | | | | | | | | | | | | | Correct an out-of-bounds read in regcomp when the RE is bad. When passed the invalid regular expression "a**", the error is eventually detected and seterr() is called. It sets p->error appropriatly and p->next and p->end to nuls which is a never used char nuls[10] which is zeros due to .bss initialization. Unfortunatly, p_ere_exp() and p_simp_re() both have fall through cases where they set the error, decrement p->next and access it which means a read from whatever .bss variable comes before nuls. Found with regex_test:repet_multi and CHERI bounds checking. Reviewed by: ngie, pfg, emaste Obtained from: CheriBSD Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D10541
* MFC r317346:pfg2017-05-076-28/+27
| | | | | | | | | regex: unsign and constify some variables. Taking some hints from the regex variant in nvi(1) and higher-level compiler warnings, update some types in our regex(3) implementation. Joint work with: Kyle Evans
* MFC r315162:pfg2017-04-071-6/+6
| | | | | | | | libc: provide some bounds-checking through reallocarray(3). reallocarray(3) is a non portable extension that originated in OpenBSD. Given that it is already in FreeBSD's libc it is useful for the cases where reallocation involves a multiplication.
* MFC r312332,r312446,r312451:ngie2017-02-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r312332: Use SRCTOP where possible and use :H to manipulate .CURDIR to get rid of unnecessarily long relative path .PATH values with make r312446 (by emaste): libc: remove reference to nonexistent lib/locale directory As far as I can tell this was introduced in r72406 and updated in several subsequent revisions, but the lib/locale directory it referenced never existed. r312451: Replace dot-dot relative pathing with SRCTOP-relative paths where possible This reduces build output, need for recalculating paths, and makes it clearer which paths are relative to what areas in the source tree. The change in performance over a locally mounted UFS filesystem was negligible in my testing, but this may more positively impact other filesystems like NFS. LIBC_SRCTOP was left alone so Juniper (and other users) can continue to manipulate lib/libc/Makefile (and other Makefile.inc's under lib/libc) as include Makefiles with custom options. Discussed with: marcel, sjg
* MFC r302824ache2016-08-171-6/+5
| | | | | | | | | | | | | 1) Eliminate possibility to call __*collate_range_cmp() with inclomplete locale (which cause core dump) by removing whole 'table' argument by which it passed. 2) Restore __collate_range_cmp() in __sccl(). 3) Collating [a-z] range in regcomp() work only for single bytes locales (we can't do it now for other ones). In previous code only first 256 wchars are considered and all others are just silently dropped from the range.
* libc/locale: Fix type breakage in __collate_range_cmp().pfg2016-06-051-3/+3
| | | | | | | | | | | | | | | | When collation support was brought in, the second and third arguments in __collate_range_cmp() were changed from int to wchar_t, breaking the ABI. Change them to a "char" type which makes more sense and keeps the ABI compatible. Also introduce __wcollate_range_cmp() which does work with wide characters. This function is used only internally in libc so we don't export it. Use the new function in glob(3), fnmatch(3), and regexec(3). PR: 179721 Suggested by: ache. jilles MFC after: 3 weeks (perhaps partial only)
* libc: regexec(3) adjustment.pfg2016-05-252-24/+50
| | | | | | | | | | | | | | | | | | | | | | Change the behavior of when REG_STARTEND is combined with REG_NOTBOL. From the original posting[1]: "Enable the assumption that pmatch[0].rm_so is a continuation offset to a string and allows us to do a proper assessment of the character in regards to it's word position ('^' or '\<'), without risking going into unallocated memory." This change makes us similar to how glibc handles REG_STARTEND | REG_NOTBOL, and is closely related to a soon-to-land fix to sed. Special thanks to Martijn van Duren and Ingo Schwarze for working out some consistent behaviour. Differential Revision: https://reviews.freebsd.org/D6257 Taken from: openbsd-tech 2016-05-24 [1] (Martijn van Duren) Relnotes: yes MFC after: 1 month
* libc/regex: fix two buffer underruns.pfg2016-05-211-9/+6
| | | | | | | | | | | | Fix some rather complex regex issues found on OpenBSD as part of some ongoing work to fix a sed(1) bug. Curiously the OpenBSD tests don't trigger segfaults on FreeBSD but the bugs were confirmed by running a port of FreeBSD's regex under OpenBSD's malloc. Huge thanks to Ingo for confirming the behavior. Taken from: Ingo Schwarze (through openbsd-tech 2016-05-15) MFC after: 1 week
* libc: spelling fixes.pfg2016-04-301-1/+1
| | | | Mostly on comments.
* regex: prevent two improbable signed integer overflows.pfg2016-04-231-2/+2
| | | | | | | | | | | In matcher() we used an integer to index nsub of type size_t. In print() we used an integer to index nstates of type sopno, typedef'd long. In both cases the indexes never take negative values. Match the types to avoid any error. MFC after: 5 days
* Add -static to CFLAGS to unbreak the tests by using a libc.a withngie2015-12-131-1/+1
| | | | | | | | | the xlocale private symbols exposed which aren't exposed publicly via the DSO PR: 191354 MFC after: 1 week Sponsored by: EMC / Isilon Storage Division
* Fix -Wformat issues and minor whitespace issues in surrounding areasngie2015-12-051-29/+25
| | | | | MFC after: 1 week Sponsored by: EMC / Isilon Storage Division
* split.ih:ngie2015-12-053-4/+6
| | | | | | | | | - Create automatically generated include header for split.c main.c: - Use function definitions from debug.ih and split.ih instead of externs Sponsored by: EMC / Isilon Storage Division
* Use `==` instead of `=` in the function comment above split(..) so mkh -pngie2015-12-051-1/+1
| | | | | | | exposes split(..). MFC after: 1 week Sponsored by: EMC / Isilon Storage Division
* Use ANSI C function prototypes/definitions instead of K&R style onesngie2015-12-051-16/+11
| | | | | MFC after: 1 week Sponsored by: EMC / Isilon Storage Division
* Add missing headers and sort #includes per style(9)ngie2015-12-051-3/+5
| | | | | MFC after: 1 week Sponsored by: EMC / Isilon Storage Division
* - Use ANSI C function prototypes/definitions instead of K&R style onesngie2015-12-051-28/+12
| | | | | | | - Add a missing return type for main(..) MFC after: 1 week Sponsored by: EMC / Isilon Storage Division
* Fix -Wformat warnings by using the correct format qualifiersngie2015-12-051-1/+1
| | | | | MFC after: 1 week Sponsored by: EMC / Isilon Storage Division
* mdoc: rendering fixesbapt2015-04-262-4/+8
|
* computematchjumps(): fix allocator sizeof operand mismatch.pfg2015-04-221-2/+2
| | | | | | Mostly cosmetical warning. Found by: Clang static analyzer
* Prevent NULL pointer de-reference.pfg2015-02-211-1/+1
| | | | | As a follow up to r279090, if dp hasn't been defined, we shouldn't attempt to do an optimization here.
* regex(3): Fix uninitialized pointer values.pfg2015-02-202-3/+3
| | | | | CID: 405582 (also clang static checker) CID: 1018724
* Disallow pattern spaces which would cause intermediate calculations todelphij2015-02-141-0/+17
| | | | | | | | overflow size_t. Obtained from: DragonFly (2841837793bd095a82f477e9c370cfe6cfb3862c dillon) Security: CERT VU#695940 MFC after: 3 days
* mdoc: remove EOL whitespace.joel2014-12-291-2/+2
|
* Plug a memory leak.delphij2014-12-191-1/+3
| | | | | Obtained from: DragonFlyBSD (commit 5119ece) MFC after: 2 weeks
* regex(3): Add support for \< and \> word delimiterspfg2014-06-302-2/+25
| | | | | | | | | | | | | | | | | | Solaris and other OSs have support for \< and \> as word delimiters in utilities like sed(1). These are useful to have for general compatiblity with Solaris but should be avoided for portability with other systems, including the traditional BSDs. Bump __FreeBSD_version as this is likely to affect some userland utilities. Reference: https://www.illumos.org/issues/516 PR: bin/153257 Obtained from: Illumos MFC after: 1 month
* Revert r267675:pfg2014-06-211-6/+6
| | | | | | | | The code doesn't really benefit of using reallocf() in this case. Also, the realloc() results being assigned temporary variable which makes blind replacement with reallocf() mostly useless. Pointed out by: stefanf, bde
* regex: Make use of reallocf().pfg2014-06-201-6/+6
| | | | | | | | | | | | Use of reallocf is useful in libraries as we are not certain the application will exit after NULL. This somewhat reduces portability but if since you are building this as part of libc it is likely you have our non-standard reallocf(3) already. Reviewed by: ache MFC after: 5 days
* Revert r265367:pfg2014-05-051-1/+1
| | | | | | | | Use of calloc instead of malloc in regex (from OpenBSD). In this case the change makes no sense since we are using realloc() later. Reported by: ache
* regex: Use calloc instead of malloc.pfg2014-05-051-1/+1
| | | | | | | Mostly to reduce differences with OpenBSD. Obtained from: OpenBSD (CVS rev. 1.17) MFC after: 3 days
* regex: Remove some unreachable breaks.pfg2014-05-012-7/+1
| | | | | | | | | This is based on a much bigger cleanup done in Illumos. Reference: https://www.illumos.org/issues/2077 MFC after: 1 week
* Replace use of ${.CURDIR} by ${LIBC_SRCTOP} and define ${LIBC_SRCTOP}marcel2014-03-041-2/+2
| | | | | | | | | | | if not already defined. This allows building libc from outside of lib/libc using a reach-over makefile. A typical use-case is to build a standard ILP32 version and a COMPAT32 version in a single iteration by building the COMPAT32 version using a reach-over makefile. Obtained from: Juniper Networks, Inc.
* Fix assignment of maximum bounadary.delphij2013-03-011-1/+1
| | | | | | Submitted by: Sascha Wildner <saw online de> Obtained from: DragonFly rev fd39c81ba220f7ad6e4dc9b30d45e828cf58a1ad MFC after: 2 weeks
* Remove some duplicated copyright notices.theraven2012-03-061-5/+0
| | | | Approved by: dim (mentor)
* Implement xlocale APIs from Darwin, mainly for use by libc++. This adds atheraven2011-11-201-4/+16
| | | | | | | | | | | | load of _l suffixed versions of various standard library functions that use the global locale, making them take an explicit locale parameter. Also adds support for per-thread locales. This work was funded by the FreeBSD Foundation. Please test any code you have that uses the C standard locale functions! Reviewed by: das (gdtoa changes) Approved by: dim (mentor)
* Converting int to wint_t leads to broekn comparison of raw charkevlo2011-11-111-8/+8
| | | | | | and encoded wint_t. Spotted by: ache
* - Don't handle out-of-memory conditionkevlo2011-11-101-20/+21
| | | | | | | - Fix types of function arguments match their declaration Reviewed by: delphij Obtained from: NetBSD
* mdoc: drop redundant .Pp and .LP callsuqs2010-10-081-1/+0
| | | | They have no effect when coming in pairs, or before .Bl/.Bd
* Fix an off-by-one error in the marking of the O_CH operatordds2009-09-161-1/+1
| | | | | | | following an OOR2 operator. PR: 130504 MFC after: 2 weeks
* Add a couple of debugging statements.dds2009-09-161-0/+3
|
* Add two test cases from PR 130504.dds2009-09-151-0/+3
| | | | | | | | | | An additional one coming from http://www.research.att.com/~gsf/testregex/ was not added; at some point the entire AT&T regression test harness should be imported here. But that would also mean commitment to fix the uncovered errors. PR: 130504 Submitted by: Chris Kuklewicz
* Add two example regexps: (1) one for matching all the characterskeramida2008-09-051-0/+8
| | | | | | | | that belong in a character class, and (2) one for matching all the characters *not* in a character class. Submitted by: Mark B, mkbucc at gmail.com MFC after: 3 days
* getopt(3) returns -1, not EOF.kevlo2008-02-181-1/+1
|
* Diff reduction against other *BSDs: ANSIfy functiondelphij2007-06-114-141/+66
| | | | prototypes. No function changes.
* Const'ify and ANSIfy the internal interfaces of regex(3).delphij2007-05-251-109/+100
| | | | | This is the final change that makes libc to compile with WERROR on my amd64 crashbox.
* Use C comments since we now preprocess these files with CPP.deischen2007-04-291-1/+3
|
* Test cases for back references.delphij2007-03-051-0/+24
| | | | Obtained from: OpenBSD
* Only stop evaluation of a back reference if the match length isdelphij2007-03-051-15/+17
| | | | | | zero and the recursion level is too deep. Obtained from: OpenBSD
* Avoid infinite recursion on:delphij2007-03-051-0/+2
| | | | | | echo "foo foo bar bar bar baz" | sed 's/\([^ ]*\)\( *\1\)*/\1/g' Obtained from: OpenBSD via NetBSD (rev. 1.18)
* Per Regents of the University of Calfornia letter, remove advertisingimp2007-01-099-36/+0
| | | | | | clause. # If I've done so improperly on a file, please let me know.
OpenPOWER on IntegriCloud