Accept files names longer than 128 bytes in recursive mode of pcre2grep

This commit is contained in:
Petr Písař 2017-11-02 09:17:55 +01:00
parent c01a6c6ec7
commit f49a98f096
3 changed files with 97 additions and 1 deletions

View File

@ -0,0 +1,32 @@
From 12dd78fc2ff2d941e724c7af72fa22daa8528041 Mon Sep 17 00:00:00 2001
From: ph10 <ph10@6239d852-aaf2-0410-a92c-79f79f948069>
Date: Sun, 22 Oct 2017 16:17:44 +0000
Subject: [PATCH 2/2] Fix memory leak issue introduced in last bug fix in
pcre2grep.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
git-svn-id: svn://vcs.exim.org/pcre2/code/trunk@874 6239d852-aaf2-0410-a92c-79f79f948069
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
src/pcre2grep.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/pcre2grep.c b/src/pcre2grep.c
index d7410b4..d75917c 100644
--- a/src/pcre2grep.c
+++ b/src/pcre2grep.c
@@ -3051,7 +3051,8 @@ if (isdirectory(pathname))
if (fnlength > FNBUFSIZ)
{
fprintf(stderr, "pcre2grep: recursive filename is too long\n");
- return 2;
+ rc = 2;
+ break;
}
sprintf(buffer, "%s%c%s", pathname, FILESEP, nextfile);
frc = grep_or_recurse(buffer, dir_recurse, FALSE);
--
2.13.6

View File

@ -0,0 +1,52 @@
From 386fd5ed13bd694a9940365602be6fcefd52d295 Mon Sep 17 00:00:00 2001
From: ph10 <ph10@6239d852-aaf2-0410-a92c-79f79f948069>
Date: Fri, 20 Oct 2017 16:51:59 +0000
Subject: [PATCH 1/2] Fix pcre2grep recursive file name length issue.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
git-svn-id: svn://vcs.exim.org/pcre2/code/trunk@873 6239d852-aaf2-0410-a92c-79f79f948069
Petr Písař: Ported to 10.30.
diff --git a/src/pcre2grep.c b/src/pcre2grep.c
index bd86998..d7410b4 100644
--- a/src/pcre2grep.c
+++ b/src/pcre2grep.c
@@ -109,7 +109,7 @@ typedef int BOOL;
#define MAXPATLEN 8192
#endif
-#define FNBUFSIZ 1024
+#define FNBUFSIZ 2048
#define ERRBUFSIZ 256
/* Values for the "filenames" variable, which specifies options for file name
@@ -3032,7 +3032,7 @@ if (isdirectory(pathname))
if (dee_action == dee_RECURSE)
{
- char buffer[1024];
+ char buffer[FNBUFSIZ];
char *nextfile;
directory_type *dir = opendirectory(pathname);
@@ -3047,7 +3047,13 @@ if (isdirectory(pathname))
while ((nextfile = readdirectory(dir)) != NULL)
{
int frc;
- sprintf(buffer, "%.512s%c%.128s", pathname, FILESEP, nextfile);
+ int fnlength = strlen(pathname) + strlen(nextfile) + 2;
+ if (fnlength > FNBUFSIZ)
+ {
+ fprintf(stderr, "pcre2grep: recursive filename is too long\n");
+ return 2;
+ }
+ sprintf(buffer, "%s%c%s", pathname, FILESEP, nextfile);
frc = grep_or_recurse(buffer, dir_recurse, FALSE);
if (frc > 1) rc = frc;
else if (frc == 0 && rc == 1) rc = 0;
--
2.13.6

View File

@ -6,7 +6,7 @@
#%%global rcversion RC1 #%%global rcversion RC1
Name: pcre2 Name: pcre2
Version: 10.30 Version: 10.30
Release: %{?rcversion:0.}1%{?rcversion:.%rcversion}%{?dist} Release: %{?rcversion:0.}2%{?rcversion:.%rcversion}%{?dist}
%global myversion %{version}%{?rcversion:-%rcversion} %global myversion %{version}%{?rcversion:-%rcversion}
Summary: Perl-compatible regular expression library Summary: Perl-compatible regular expression library
# the library: BSD with exceptions # the library: BSD with exceptions
@ -42,6 +42,12 @@ URL: http://www.pcre.org/
Source: ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/%{?rcversion:Testing/}%{name}-%{myversion}.tar.bz2 Source: ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/%{?rcversion:Testing/}%{name}-%{myversion}.tar.bz2
# Do no set RPATH if libdir is not /usr/lib # Do no set RPATH if libdir is not /usr/lib
Patch0: pcre2-10.10-Fix-multilib.patch Patch0: pcre2-10.10-Fix-multilib.patch
# 1/2 Accept files names longer than 128 bytes in recursive mode of pcre2grep,
# upstream bug #2177, in upstream after 10.30
Patch1: pcre2-10.30-Fix-pcre2grep-recursive-file-name-length-issue.patch
# 2/2 Accept files names longer than 128 bytes in recursive mode of pcre2grep,
# upstream bug #2177, in upstream after 10.30
Patch2: pcre2-10.30-Fix-memory-leak-issue-introduced-in-last-bug-fix-in-.patch
BuildRequires: autoconf BuildRequires: autoconf
BuildRequires: automake BuildRequires: automake
BuildRequires: coreutils BuildRequires: coreutils
@ -116,6 +122,8 @@ Utilities demonstrating PCRE2 capabilities like pcre2grep or pcre2test.
%prep %prep
%setup -q -n %{name}-%{myversion} %setup -q -n %{name}-%{myversion}
%patch0 -p1 %patch0 -p1
%patch1 -p1
%patch2 -p1
# Because of multilib patch # Because of multilib patch
libtoolize --copy --force libtoolize --copy --force
autoreconf -vif autoreconf -vif
@ -219,6 +227,10 @@ make %{?_smp_mflags} check VERBOSE=yes
%{_mandir}/man1/pcre2test.* %{_mandir}/man1/pcre2test.*
%changelog %changelog
* Thu Nov 02 2017 Petr Pisar <ppisar@redhat.com> - 10.30-2
- Accept files names longer than 128 bytes in recursive mode of pcre2grep
(upstream bug #2177)
* Tue Aug 15 2017 Petr Pisar <ppisar@redhat.com> - 10.30-1 * Tue Aug 15 2017 Petr Pisar <ppisar@redhat.com> - 10.30-1
- 10.30 bump - 10.30 bump