SHA256
6
0
forked from pool/tre

Compare commits

...

2 Commits

8 changed files with 50 additions and 288 deletions

View File

@ -1,112 +0,0 @@
From 35f61f40d6b68928ca5d409fa9fc204ea77e2199 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fvogt@suse.de>
Date: Tue, 11 Oct 2022 11:35:53 +0200
Subject: [PATCH] Remove broken agrep test entry
It's meant to cause agrep to return with exit code 2, but asserts that it's
exit code 1 instead.
It's meant to ensure that using ".*" as pattern results in exit code 2 because
it matches also an empty string. However, glob expansion results in ".*"
picking up files such as "." and ".." from the CWD, which get interpreted as
valid pattern. This results in exit status 1 (no match found) which is what
the .ok file expects, but that's invalid.
With bash 5.2, glob expansion no longer matches "." and ".." by default, so
the test works as intended by accident, causing a mismatch with the expected
wrong exit code.
It's unfortunately not easily possible to avoid glob expansion in this case.
Just remove the test for now.
---
tests/agrep/exitstatus.args | 1 -
tests/agrep/exitstatus.ok | 61 -------------------------------------
2 files changed, 62 deletions(-)
diff --git a/tests/agrep/exitstatus.args b/tests/agrep/exitstatus.args
index 808ae77..2f53e97 100644
--- a/tests/agrep/exitstatus.args
+++ b/tests/agrep/exitstatus.args
@@ -5,6 +5,5 @@ this-wont-be-found
.
-v .
# Some errors which should give exit status 2.
--d .* dummy
-d {1 dummy
\
diff --git a/tests/agrep/exitstatus.ok b/tests/agrep/exitstatus.ok
index 28427bb..bd23b4c 100644
--- a/tests/agrep/exitstatus.ok
+++ b/tests/agrep/exitstatus.ok
@@ -521,67 +521,6 @@ Exit status 1.
Exit status 1.
#### TEST: agrep -H -n -s --color --show-position -v . < exitstatus.in
-Exit status 1.
-#### TEST: agrep -d .* dummy exitstatus.in
-
-Exit status 1.
-#### TEST: agrep -d .* dummy < exitstatus.in
-
-Exit status 1.
-#### TEST: agrep -c -d .* dummy exitstatus.in
-exitstatus.in:0
-
-Exit status 1.
-#### TEST: agrep -c -d .* dummy < exitstatus.in
-
-Exit status 1.
-#### TEST: agrep -H -d .* dummy exitstatus.in
-
-Exit status 1.
-#### TEST: agrep -H -d .* dummy < exitstatus.in
-
-Exit status 1.
-#### TEST: agrep -l -d .* dummy exitstatus.in
-
-Exit status 1.
-#### TEST: agrep -l -d .* dummy < exitstatus.in
-
-Exit status 1.
-#### TEST: agrep -n -d .* dummy exitstatus.in
-
-Exit status 1.
-#### TEST: agrep -n -d .* dummy < exitstatus.in
-
-Exit status 1.
-#### TEST: agrep -s -d .* dummy exitstatus.in
-
-Exit status 1.
-#### TEST: agrep -s -d .* dummy < exitstatus.in
-
-Exit status 1.
-#### TEST: agrep -M -d .* dummy exitstatus.in
-
-Exit status 1.
-#### TEST: agrep -M -d .* dummy < exitstatus.in
-
-Exit status 1.
-#### TEST: agrep --show-position -d .* dummy exitstatus.in
-
-Exit status 1.
-#### TEST: agrep --show-position -d .* dummy < exitstatus.in
-
-Exit status 1.
-#### TEST: agrep --color -d .* dummy exitstatus.in
-
-Exit status 1.
-#### TEST: agrep --color -d .* dummy < exitstatus.in
-
-Exit status 1.
-#### TEST: agrep -H -n -s --color --show-position -d .* dummy exitstatus.in
-
-Exit status 1.
-#### TEST: agrep -H -n -s --color --show-position -d .* dummy < exitstatus.in
-
Exit status 1.
#### TEST: agrep -d {1 dummy exitstatus.in
--
2.36.1

View File

@ -1,73 +0,0 @@
From c3edc06d1e1360f3570db9155d6b318ae0d0f0f7 Mon Sep 17 00:00:00 2001
From: Rich Felker <dalias@aerifal.cx>
Date: Thu, 6 Oct 2016 18:34:58 -0400
Subject: fix missing integer overflow checks in regexec buffer size
computations
most of the possible overflows were already ruled out in practice by
regcomp having already succeeded performing larger allocations.
however at least the num_states*num_tags multiplication can clearly
overflow in practice. for safety, check them all, and use the proper
type, size_t, rather than int.
also improve comments, use calloc in place of malloc+memset, and
remove bogus casts.
---
src/regex/regexec.c | 23 ++++++++++++++++++-----
1 file changed, 18 insertions(+), 5 deletions(-)
Note: patch was modified to apply to tre, parts were taken from
https://github.com/laurikari/tre/issues/37
--- a/lib/tre-match-parallel.c
+++ b/lib/tre-match-parallel.c
@@ -59,6 +59,7 @@ char *alloca ();
#ifdef HAVE_MALLOC_H
#include <malloc.h>
#endif /* HAVE_MALLOC_H */
+#include <stdint.h>
#include "tre-internal.h"
#include "tre-match-utils.h"
@@ -150,11 +151,24 @@ tre_tnfa_run_parallel(const tre_tnfa_t *
/* Allocate memory for temporary data required for matching. This needs to
be done for every matching operation to be thread safe. This allocates
- everything in a single large block from the stack frame using alloca()
- or with malloc() if alloca is unavailable. */
+ everything in a single large block with calloc(). */
{
- int tbytes, rbytes, pbytes, xbytes, total_bytes;
+ size_t tbytes, rbytes, pbytes, xbytes, total_bytes;
char *tmp_buf;
+
+ /* Ensure that tbytes and xbytes*num_states cannot overflow, and that
+ * they don't contribute more than 1/8 of SIZE_MAX to total_bytes. */
+ if (num_tags > SIZE_MAX/(8 * sizeof(int) * tnfa->num_states))
+ return REG_BADPAT;
+
+ /* Likewise check rbytes. */
+ if (tnfa->num_states+1 > SIZE_MAX/(8 * sizeof(*reach_next)))
+ return REG_BADPAT;
+
+ /* Likewise check pbytes. */
+ if (tnfa->num_states > SIZE_MAX/(8 * sizeof(*reach_pos)))
+ return REG_BADPAT;
+
/* Compute the length of the block we need. */
tbytes = sizeof(*tmp_tags) * num_tags;
rbytes = sizeof(*reach_next) * (tnfa->num_states + 1);
@@ -168,11 +182,11 @@ tre_tnfa_run_parallel(const tre_tnfa_t *
#ifdef TRE_USE_ALLOCA
buf = alloca(total_bytes);
#else /* !TRE_USE_ALLOCA */
- buf = xmalloc((unsigned)total_bytes);
+ buf = xmalloc(total_bytes);
#endif /* !TRE_USE_ALLOCA */
if (buf == NULL)
return REG_ESPACE;
- memset(buf, 0, (size_t)total_bytes);
+ memset(buf, 0, total_bytes);
/* Get the various pointers within tmp_buf (properly aligned). */
tmp_tags = (void *)buf;

BIN
tre-0.8.0_git201402282055.tar.bz2 (Stored with Git LFS)

Binary file not shown.

BIN
tre-0.9.0.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -1,21 +0,0 @@
diff -up tre-0.8.0/python/setup.py.in.chicken tre-0.8.0/python/setup.py.in
--- tre-0.8.0/python/setup.py.in.chicken 2009-09-20 09:51:01.000000000 +0200
+++ tre-0.8.0/python/setup.py.in 2009-09-20 15:43:45.000000000 +0200
@@ -10,7 +10,8 @@ import shutil
version = "@TRE_VERSION@"
data_files = []
-include_dirs = ["../lib"]
+include_dirs = ["../include"]
+library_dirs = ["../lib/.libs"]
libraries = ["tre"]
if sys.platform == "win32":
@@ -31,6 +32,7 @@ setup(name = "tre",
sources = ["tre-python.c"],
define_macros = [("HAVE_CONFIG_H", None)],
include_dirs = include_dirs,
+ library_dirs = library_dirs,
libraries = libraries
),
],

View File

@ -1,3 +1,20 @@
-------------------------------------------------------------------
Fri Nov 22 20:05:09 UTC 2024 - Andreas Stieger <andreas.stieger@gmx.de>
- update to 0.9.0:
* Modify the bound parser to allow the minimum and maximum count
to be omitted, defaulting to zero and infinity, respectively.
* Add API variants for operating on raw byte vectors:
tre_regnexecb, tre_regexecb, tre_regncompb, tre_regaexecb,
tre_regcompb
* Bug fixes
- drop unneeded patches or patches included upstream:
* 0001-Remove-broken-agrep-test-entry.patch
* CVE-2016-8859.patch
* tre-chicken.patch
* tre.diff
- drop legacy obsoletes/provides
-------------------------------------------------------------------
Tue Oct 11 09:44:20 UTC 2022 - Fabian Vogt <fvogt@suse.com>

View File

@ -1,28 +0,0 @@
diff -ru tre-0.7.5/lib/tre-match-approx.c tre-0.7.5.new/lib/tre-match-approx.c
--- tre-0.7.5/lib/tre-match-approx.c 2006-12-08 19:07:03.000000000 +0000
+++ tre-0.7.5.new/lib/tre-match-approx.c 2008-01-24 19:47:12.000000000 +0000
@@ -23,24 +23,6 @@
#include <config.h>
#endif /* HAVE_CONFIG_H */
-/* AIX requires this to be the first thing in the file. */
-#ifdef TRE_USE_ALLOCA
-#ifndef __GNUC__
-# if HAVE_ALLOCA_H
-# include <alloca.h>
-# else
-# ifdef _AIX
- #pragma alloca
-# else
-# ifndef alloca /* predefined by HP cc +Olibcalls */
-char *alloca ();
-# endif
-# endif
-# endif
-#endif
-#endif /* TRE_USE_ALLOCA */
-
-#define __USE_STRING_INLINES
#undef __NO_INLINE__
#include <assert.h>

View File

@ -2,6 +2,7 @@
# spec file for package tre
#
# Copyright (c) 2022 SUSE LLC
# Copyright (c) 2024 Andreas Stieger <Andreas.Stieger@gmx.de>
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -16,75 +17,51 @@
#
%define sover 5
Name: tre
Version: 0.8.0_git201402282055
Version: 0.9.0
Release: 0
Summary: POSIX compatible regexp library with approximate matching
Summary: POSIX-compatible regexp library with approximate matching
License: BSD-3-Clause
Group: System/Libraries
Group: Development/Libraries/C and C++
URL: https://laurikari.net/tre/
# This source comes from https://github.com/laurikari/tre/, revision
# c2f5d130c91b1696385a6ae0b5bcfd5214bcc9ca. The previously released
# version 0.8.0 is old (2009) and no new released have been made by
# the author, so I'm terming this 0.8.0_git201402282055.
Source0: tre-%{version}.tar.bz2
Patch0: %{name}.diff
# Update the python build to fix wrong include and lib paths.
# See https://github.com/laurikari/tre/pull/19.
Patch1: %{name}-chicken.patch
Patch2: CVE-2016-8859.patch
# https://github.com/laurikari/tre/pull/87
Patch3: 0001-Remove-broken-agrep-test-entry.patch
BuildRequires: gettext-devel
Source0: https://github.com/laurikari/tre/releases/download/v%{version}/%{name}-%{version}.tar.gz
BuildRequires: glibc-locale
BuildRequires: libtool
%lang_package -n libtre%{sover}
%description
TRE is a lightweight, robust, and efficient POSIX compatible regexp
matching library with some exciting features such as approximate
matching.
TRE is a POSIX-compatible regexp matching library with approximate
(fuzzy) matching.
%package -n libtre5
Summary: POSIX compatible regexp library with approximate matching
%package -n libtre%{sover}
Summary: POSIX-compatible regexp library with approximate matching
Group: System/Libraries
Requires: %{name} = %{version}
Recommends: %{name}-lang = %{version}
Obsoletes: libtre
Provides: libtre
%description -n libtre5
TRE is a lightweight, robust, and efficient POSIX compatible regexp
matching library with some exciting features such as approximate
matching.
%post -n libtre5 -p /sbin/ldconfig
%postun -n libtre5 -p /sbin/ldconfig
%description -n libtre%{sover}
TRE is a POSIX-compatible regexp matching library with approximate
(fuzzy) matching. TRE's algorithm has linear worst-case time in the
length of the text being searched, and quadratic worst-case time in
the length of the used regular expression.
%package devel
Summary: POSIX compatible regexp library with approximate matching
Summary: Header files for the TRE regex library
Group: Development/Libraries/C and C++
Requires: libtre5 = %{version}
Obsoletes: libtre-devel
Provides: libtre-devel
Requires: libtre%{sover} = %{version}
%description devel
TRE is a lightweight, robust, and efficient POSIX compatible regexp
matching library with some exciting features such as approximate
matching.
TRE is a POSIX-compatible regexp matching library with approximate
This package contains the headers.
%package -n agrep
Summary: Another powerful grep with interesting features
Summary: Another grep with approximate matching and block search
Group: Productivity/Text/Utilities
%description -n agrep
agrep is another powerful grep which has the ability to search for
agrep is a grep utility which has the ability to search for
approximate patterns as well as block oriented search.
%lang_package
%prep
%autosetup -p1
./utils/autogen.sh
%build
%configure --disable-static --enable-shared
@ -93,28 +70,30 @@ approximate patterns as well as block oriented search.
%install
%make_install
find %{buildroot} -type f -name "*.la" -delete -print
%find_lang %{name} || echo -n >> %{name}.lang
%find_lang %{name}
%check
%make_build check
%files
%license LICENSE
%doc ABOUT-NLS AUTHORS NEWS README THANKS TODO
%ldconfig_scriptlets -n libtre%{sover}
%files -n libtre5
%files -n libtre%{sover}
%license LICENSE
%{_libdir}/libtre.so.*
%files devel
%license LICENSE
%doc doc/default.css doc/tre-api.html doc/tre-syntax.html
%{_includedir}/*
%{_libdir}/libtre.so
%{_libdir}/pkgconfig/*
%files -n agrep
%license LICENSE
%{_bindir}/agrep
%{_mandir}/man1/agrep.1%{?ext_man}
%files lang -f %{name}.lang
%files -n libtre%{sover}-lang -f %{name}.lang
%license LICENSE
%changelog