[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: grep 2.6, savedir.c
From: |
Jim Meyering |
Subject: |
Re: grep 2.6, savedir.c |
Date: |
Fri, 26 Mar 2010 11:37:29 +0100 |
Standish Parsley wrote:
> In grep 2.6, savedir.c is broken. The following will produce a segfault with
> grep 2.6, but works fine with grep 2.5.4:
>
> grep -rl --exclude-dir=foo NEEDLE $HOME
>
> It looks like, in savedir.c's isdir1(), path is being accessed before it is
> allocated.
Thanks for the report!
That is definitely a bug.
This makes me regret not removing savedir a couple
months ago when I converted to gnulib...
Here's the fix.
I'll push shortly, once I've added a test to exercise the
code in question.
>From 4e8e9fc468ddc500ac533a2648894a18a47dc793 Mon Sep 17 00:00:00 2001
From: Jim Meyering <address@hidden>
Date: Fri, 26 Mar 2010 11:34:27 +0100
Subject: [PATCH] grep: don't segfault upon use of --exclude or --exclude-dir
* lib/savedir.c (isdir1): Fix typo: test "dir" argument, not
the global (NULL) "path". Reported by Standish Parsley.
---
THANKS | 1 +
lib/savedir.c | 2 +-
2 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/THANKS b/THANKS
index f7d8970..e1273de 100644
--- a/THANKS
+++ b/THANKS
@@ -73,6 +73,7 @@ Ruslan Ermilov <address@hidden>
Santiago Vila <address@hidden>
Shannon Hill <address@hidden>
Sotiris Vassilopoulos <address@hidden>
+Standish Parsley <address@hidden>
Stewart Levin <address@hidden>
Sven Joachim <address@hidden>
Sydoruk Stepan <address@hidden>
diff --git a/lib/savedir.c b/lib/savedir.c
index 91fd77b..94e5f12 100644
--- a/lib/savedir.c
+++ b/lib/savedir.c
@@ -48,7 +48,7 @@ isdir1 (const char *dir, const char *file)
size_t dirlen = strlen (dir);
size_t filelen = strlen (file);
- while (dirlen && path[dirlen - 1] == '/')
+ while (dirlen && dir[dirlen - 1] == '/')
dirlen--;
if ((dirlen + filelen + 2) > pathlen)
--
1.7.0.3.448.g82eeb