>> On Thu, Apr 28, 2011 at 04:20:06PM +0200, Éric Araujo wrote:
>> > >          if hasattr(os, "symlink") and hasattr(os, "link"):
>> > >              # For systems that support symbolic and hard links.
>> > >              if tarinfo.issym():
>> > > +                if os.path.exists(targetpath):
>> > > +                    os.unlink(targetpath)
>> >
>> > Is there a race condition here?
>>
>> The lock to avoid race conditions (if you were thinking along those
>> lines) would usually be implemented at the higher level code which is
>> using extractall in threads.
>
> A lock would only protect only against multi-threaded use of the
> tarfile module, which is probably quite rare and therefore not a real
> concern.
> The kind of race condition which can happen here is if an attacker
> creates "targetpath" between os.path.exists and os.unlink. Whether it
> is an exploitable flaw would need a detailed analysis, of course.
>

Just out of curiosity, could you please elaborate on the potential
threat of this? If the "exists" condition is true, targetpath already
exists, so what use there is in overwriting it? If the condition is
false, unlink isn't executed, so no harm either. What am I missing?

Eli
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to