[Patches] [ python-Patches-784825 ] fix obscure crash in descriptor handling

SourceForge.net noreply at sourceforge.net
Mon Aug 11 18:36:52 EDT 2003


Patches item #784825, was opened at 2003-08-07 10:32
Message generated for change (Comment added) made by rhettinger
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=784825&group_id=5470

Category: Core (C code)
Group: Python 2.4
Status: Open
Resolution: None
Priority: 5
Submitted By: Michael Hudson (mwh)
Assigned to: Nobody/Anonymous (nobody)
Summary: fix obscure crash in descriptor handling

Initial Comment:
Ages & ages back twouters pointed out a potential hole in 
PyObject_GenericGetAttr.  I've come up with a testcase & a 
fix, attached to this report.

Are there any other bits of code shaped like 
PyObject_GenericGetAttr?  I've fixed type_getattro.


----------------------------------------------------------------------

>Comment By: Raymond Hettinger (rhettinger)
Date: 2003-08-11 19:36

Message:
Logged In: YES 
user_id=80475

In typeobject.c, eliminate the else-block so that it is obvious 
that the incref always gets executed before the block ends.

Also, the first XDECREF (on line 2022) needs to be 
repositioned (to later in the block) because, in MSVC++, the 
descrgetfunc declaration (two lines below) needs to be the 
first line in the code block.

The final exit path (marked "give up") also need a DECREF.

In object.c, the DECREF on line 1459 should be a XDECREF 
and the final exit path (running PyErr_Format) also needs a 
XDECREF.

This is labelled as a Py2.4 patch but it should probably be 
backported also.



----------------------------------------------------------------------

Comment By: Michael Hudson (mwh)
Date: 2003-08-11 12:42

Message:
Logged In: YES 
user_id=6656

trying to attach again, grr

----------------------------------------------------------------------

Comment By: Michael Hudson (mwh)
Date: 2003-08-11 12:38

Message:
Logged In: YES 
user_id=6656

upload new patch that has a test that doesn't call gc.get_referrers 
on the integer 1 and thus create uncollectable cycles (or 
something like that, anyway).

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=784825&group_id=5470



More information about the Patches mailing list