|
|
2eb3461 |
From 49b9fc5a42ea59ca095413bdd4d11a952df5562d Mon Sep 17 00:00:00 2001
|
|
|
2eb3461 |
From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
|
|
|
2eb3461 |
Date: Fri, 20 Oct 2017 16:57:48 +0000
|
|
|
2eb3461 |
Subject: [PATCH 1/2] Fix pcregrep recursive file name issue.
|
|
|
2eb3461 |
MIME-Version: 1.0
|
|
|
2eb3461 |
Content-Type: text/plain; charset=UTF-8
|
|
|
2eb3461 |
Content-Transfer-Encoding: 8bit
|
|
|
2eb3461 |
|
|
|
2eb3461 |
git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1712 2f5784b3-3f2a-0410-8824-cb99058d5e15
|
|
|
2eb3461 |
|
|
|
2eb3461 |
Petr Písař: Ported to 8.41.
|
|
|
2eb3461 |
|
|
|
2eb3461 |
diff --git a/pcregrep.c b/pcregrep.c
|
|
|
2eb3461 |
index 317f745..d4a5fb5 100644
|
|
|
2eb3461 |
--- a/pcregrep.c
|
|
|
2eb3461 |
+++ b/pcregrep.c
|
|
|
2eb3461 |
@@ -2234,7 +2234,7 @@ if (isdirectory(pathname))
|
|
|
2eb3461 |
|
|
|
2eb3461 |
if (dee_action == dee_RECURSE)
|
|
|
2eb3461 |
{
|
|
|
2eb3461 |
- char buffer[1024];
|
|
|
2eb3461 |
+ char buffer[2048];
|
|
|
2eb3461 |
char *nextfile;
|
|
|
2eb3461 |
directory_type *dir = opendirectory(pathname);
|
|
|
2eb3461 |
|
|
|
2eb3461 |
@@ -2249,7 +2249,13 @@ if (isdirectory(pathname))
|
|
|
2eb3461 |
while ((nextfile = readdirectory(dir)) != NULL)
|
|
|
2eb3461 |
{
|
|
|
2eb3461 |
int frc;
|
|
|
2eb3461 |
- sprintf(buffer, "%.512s%c%.128s", pathname, FILESEP, nextfile);
|
|
|
2eb3461 |
+ int fnlength = strlen(pathname) + strlen(nextfile) + 2;
|
|
|
2eb3461 |
+ if (fnlength > 2048)
|
|
|
2eb3461 |
+ {
|
|
|
2eb3461 |
+ fprintf(stderr, "pcre2grep: recursive filename is too long\n");
|
|
|
2eb3461 |
+ return 2;
|
|
|
2eb3461 |
+ }
|
|
|
2eb3461 |
+ sprintf(buffer, "%s%c%s", pathname, FILESEP, nextfile);
|
|
|
2eb3461 |
frc = grep_or_recurse(buffer, dir_recurse, FALSE);
|
|
|
2eb3461 |
if (frc > 1) rc = frc;
|
|
|
2eb3461 |
else if (frc == 0 && rc == 1) rc = 0;
|
|
|
2eb3461 |
--
|
|
|
2eb3461 |
2.13.6
|
|
|
2eb3461 |
|