[37465] in bugtraq

home help back first fref pref prev next nref lref last post

Re: Changes to the filesystem while find is running - comments?

daemon@ATHENA.MIT.EDU (Paul Szabo)
Tue Nov 23 16:47:55 2004

Date: Tue, 23 Nov 2004 12:38:52 +1100 (EST)
From: psz@maths.usyd.edu.au (Paul Szabo)
Message-Id: <200411230138.iAN1cqk309940@milan.maths.usyd.edu.au>
To: bugtraq@excession.spiral-arm.org
Cc: bug-findutils@gnu.org, bugtraq@securityfocus.com, levon@movementarian.org,
        martin.buchholz@sun.com, parimiv@deshaw.com, srevilak@speakeasy.net

James,

>>   PARENT=stat(".");
>>   SUBDIR=stat("subdir");
>>   chdir("subdir");
>>   DOT=stat(".");
>>   if (SUBDIR != DOT) {
>>     Print warning message    /*[1]*/
>>   }
>>   else {
>>     Go on with find (recurse)
>>   }
>>   chdir("..");
>>   DOT=stat(".");
>>   if (PARENT != DOT) {
>>     Print message
>>     Exit with fatal error
>>   }
> 
> Certainly.  In fact it's how GNU findutils is implemented, except for
> the fact that the "warning message" is a fatal error in GNU findutils
> releases up to and including 4.2.5.  In later versions (we're
> currently at 4.2.7 on ftp://alpha.gnu.org/gnu/findutils) a hack was
> introduced to try to support a special case which works when we've
> traversed an automount mount point on Solaris).

So, you already do the "where did I get back to after chdir(..)" check?

> This algorithm is certainly robust, but it will never descend into an
> automount directory hierarchy.  Do you think we can do better than
> that without opening the door to more exploits?

Hmm... It would not descend into just-now-changed automounts (and it may
not be able to get back out of them), but it should be able to traverse
reasonably long-lived mounts.

Cheers,

Paul Szabo - psz@maths.usyd.edu.au  http://www.maths.usyd.edu.au:8000/u/psz/
School of Mathematics and Statistics  University of Sydney   2006  Australia

home help back first fref pref prev next nref lref last post