bugfindutils - Bugs: bug #19374, Insufficient quoting of PRUNEPATHS...

 
 

bug #19374: Insufficient quoting of PRUNEPATHS in updatedb

Submitted by:  Andreas Metzler <ametzler>
Submitted on:  Wed 21 Mar 2007 06:21:47 PM UTC  
 
Category: updatedbSeverity: 3 - Normal
Item Group: NoneStatus: Postponed
Privacy: PublicAssigned to: None
Originator Name: István VáradiOpen/Closed: Open
Release: 4.2.28Fixed Release: None

Add a New Comment (Rich MarkupRich Markup):
   

You are not logged in

Please log in, so followups can be emailed to you.

 

Wed 14 Jul 2010 08:11:50 PM UTC, comment #4:

Patches don't work for me when using the command-line option --prunepath as the asterisks are expanded in the "for arg" access of the implicit $@. As a workaround, wrapping my pattern with \( and \) works, like updatedb --prunepaths='\(.*/.svn\)'

Patches do work when setting the PRUNEPATH environment variable.

Anonymous
Sun 11 Apr 2010 11:56:38 AM UTC, comment #3:

updatedb would probably be best rewritten. I'm going to mark the updatedb-related bus as "Postponed" in order to consider them all in a batch, when I get around to the rewrite.

(Leslie P. Polzer did start on a rewrite some time back as part of the Summer of Code but there are some updatedb-related issues his changes don't resolve yet, I think)

James Youngman <jay>
Project Administrator
Mon 09 Feb 2009 09:22:17 AM UTC, comment #2:

Here is a patch:

--- updatedb.org 2009-01-27 13:29:28.575086300 +0100
+++ updatedb 2009-02-09 10:19:41.132505500 +0100
@@ -163,7 +163,7 @@
# Trailing slashes result in regex items that are never matched, which
# is not what the user will expect. Therefore we now reject such
# constructs.
-for p in $PRUNEPATHS; do
+for p in "$PRUNEPATHS"; do
case "$p" in
/*/) echo "$0: $p: pruned paths should not contain trailing slashes" >&2
exit 1
@@ -172,7 +172,7 @@

# The same, in the form of a regex that find can use.
test -z "$PRUNEREGEX" &&
- PRUNEREGEX=`echo $PRUNEPATHS|sed -e 's,^,\\\(^,' -e 's, ,$\\\)\\\|\\\(^,g' -e 's,$,$\\\),'`
+ PRUNEREGEX=`echo "$PRUNEPATHS"|sed -e 's,^,\\\(^,' -e 's, ,$\\\)\\\|\\\(^,g' -e 's,$,$\\\),'`

# The database file to build.
: ${LOCATE_DB=/var/locatedb}

Anonymous
Tue 27 Jan 2009 12:21:56 PM UTC, comment #1:

I second this ticket. Trying to prune directories based on regular expressions doesn't work. For example:

updatedb --findoptions='-mount' --localpaths='/cygdrive/c' --prunepaths='.*/.svn'

The asterisk in '.*/.svn' is shell-expanded by the line where pruned paths are converted to regular expressions. If $PRUNEPATH in this line is placed in double quotes works.

Anonymous
Wed 21 Mar 2007 06:21:47 PM UTC, original submission:

This is http://bugs.debian.org/415567

István Váradi writes: -----------------------
The updatedb script uses the PRUNEPATHS environment variable without quoting it. This causes some problems when putting regular expressions into the value of this variable. For example, if I use an asterisk () in a path, it will be expanded by the shell before using it as a regular expression. Thus, ./lost+found becomes ../lost+found (and possibly others, depending on how many files or directories, whose names start with a dot I have in the working directory).
---------------------------------------------

Afaict the fix should be trivial:

- for p in $PRUNEPATHS; do
+ for p in "$PRUNEPATHS"; do
[...]
- PRUNEREGEX=`echo $PRUNEPATHS|sed -e 's,^,\\\(^,' -e 's, ,$\\\)\\\|\\\(^,g' -e 's,$,$\\\),'`
+ PRUNEREGEX=`echo "$PRUNEPATHS"|sed -e 's,^,\\\(^,' -e 's, ,$\\\)\\\|\\\(^,g' -e 's,$,$\\\),'`

thanks, cu andreas

Andreas Metzler <ametzler>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach File(s):
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -unavailable- added by jay (Posted a comment)
  • -unavailable- added by ametzler
  •  

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.

     

    Please enter the title of George Orwell's famous dystopian book (it's a date):

     

     

    Follow 3 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Sun 11 Apr 2010 11:56:38 AM UTCjayStatusNone=>Postponed
    Wed 21 Mar 2007 06:22:06 PM UTCametzlerCarbon-CopyRemoved 20807=>-
    Wed 21 Mar 2007 06:21:47 PM UTCametzlerCarbon-Copy-=>Added -unavailable-

    Back to the top


    Powered by Savane 3.1-cleanup