summaryrefslogtreecommitdiff
path: root/lang/python25
diff options
context:
space:
mode:
authorsnj <snj@pkgsrc.org>2009-04-11 19:42:23 +0000
committersnj <snj@pkgsrc.org>2009-04-11 19:42:23 +0000
commit927c2711ab0aaac9be386a8405fb6bec54e9fee7 (patch)
tree4fdd137842929aae5075d5a61e4b7102872d7383 /lang/python25
parent00b26f28b71a58aec4d2ea621bf0865d32dca10c (diff)
downloadpkgsrc-927c2711ab0aaac9be386a8405fb6bec54e9fee7.tar.gz
Update python25 to 2.5.4. Spammy changes:
What's New in Python 2.5.4? =========================== *Release date: 23-Dec-2008* Core and builtins ----------------- - Revert patch for #1706039, as it can crash the interpreter. - Added test case to ensure attempts to read from a file opened for writing fail. What's New in Python 2.5.3? =========================== *Release date: 19-Dec-2008* Build ----- - In the OSX installer, update SQLite to 3.6.7, and change bsddb URL. Build against system Tcl framework. What's New in Python 2.5.3c1? ============================= *Release date: 13-Dec-2008* Core and builtins ----------------- - Issue #1706039: Support continued reading from a file even after EOF was hit. - Issue #1683: prevent forking from interfering in threading storage. - Issue #4597: Fixed several opcodes that weren't always propagating exceptions. - Issue #4589: Propagated an exception thrown by a context manager's __exit__ method's result while it's being converted to bool. - Issue #4317: Fixed a crash in the imageop.rgb2rgb8() function. - Issue #4230: If ``__getattr__`` is a descriptor, it now functions correctly. - Issue #4048: The parser module now correctly validates relative imports. - Issue #4176: Fixed a crash when pickling an object which ``__reduce__`` method does not return iterators for the 4th and 5th items. - Issue #3967: Fixed a crash in the count() and find() methods of string-like objects, when the "start" parameter is a huge value. - Issue #3936: The parser warnings for using "as" and "with" as variable names didn't fire after import statements. - Issue #3751: str.rpartition would perform a left-partition when called with a unicode argument. - Issue #3537: Fix an assertion failure when an empty but presized dict object was stored in the freelist. - Apply security patches from Apple. - Issue #2620: Overflow checking when allocating or reallocating memory was not always being done properly in some python types and extension modules. PyMem_MALLOC, PyMem_REALLOC, PyMem_NEW and PyMem_RESIZE have all been updated to perform better checks and places in the code that would previously leak memory on the error path when such an allocation failed have been fixed. - Issue #2242: Fix a crash when decoding invalid utf-7 input on certain Windows / Visual Studio versions. - Issue #3360: Fix incorrect parsing of '020000000000.0', which produced a ValueError instead of giving the correct float. - Issue #3242: Fix a crash inside the print statement, if sys.stdout is set to a custom object whose write() method happens to install another file in sys.stdout. - Issue #3088: Corrected a race condition in classes derived from threading.local: the first member set by a thread could be saved in another thread's dictionary. - Issue #3100: Corrected a crash on deallocation of a subclassed weakref which holds the last (strong) reference to its referent. - Issue #1686386: Tuple's tp_repr did not take into account the possibility of having a self-referential tuple, which is possible from C code. Nor did object's tp_str consider that a type's tp_str could do something that could lead to an inifinite recursion. Py_ReprEnter() and Py_EnterRecursiveCall(), respectively, fixed the issues. (Backport of r58288 from trunk.) - Patch #1442: properly report exceptions when the PYTHONSTARTUP file cannot be executed. - The compilation of a class nested in another class used to leak one reference on the outer class name. - Issue #1477: With narrow Unicode builds, the unicode escape sequence \Uxxxxxxxx did not accept values outside the Basic Multilingual Plane. This affected raw unicode literals and the 'raw-unicode-escape' codec. Now UTF-16 surrogates are generated in this case, like normal unicode literals and the 'unicode-escape' codec. - Issue #2321: use pymalloc for unicode object string data to reduce memory usage in some circumstances. - Issue #2238: Some syntax errors in *args and **kwargs expressions could give bogus error messages. - Issue #2587: In the C API, PyString_FromStringAndSize() takes a signed size parameter but was not verifying that it was greater than zero. Values less than zero will now raise a SystemError and return NULL to indicate a bug in the calling C code. - Issue #2588, #2589: Fix potential integer underflow and overflow conditions in the PyOS_vsnprintf C API function. - Issue #1204: The configure script now tests for additional libraries that may be required when linking against readline. This fixes issues with x86_64 builds on some platforms (a few Linux flavors and OpenBSD). - Issue #3678: Correctly pass LDFLAGS and LDLAST to the linker on shared library targets in the Makefile. Library ------- - Issue #3767: Convert Tk object to string in tkColorChooser. - Issue #4342: Always convert Text.index result to string. - Issue 3248: Allow placing ScrolledText in a PanedWindow. - Issue #4084: Fix max, min, max_mag and min_mag Decimal methods to give correct results in the case where one argument is a quiet NaN and the other is a finite number that requires rounding. - Issue #1776581 and #4302. Minor corrections to smtplib. - Issue #3774: Fixed an error when create a Tkinter menu item without command and then remove it. - Assigning methods to ctypes.Structure and ctypes.Union subclasses after creation of the class does now work correctly. See Issue #1700288. - Issue #3895: _lsprof could be crashed with an external timer that did not return a float when a Profiler object is garbage collected. - Issues #3968 and #3969: two minor turtle problems. - Issue #3547: Fixed ctypes structures bitfields of varying integer sizes. - Issue #3762: platform.architecture() fails if python is lanched via its symbolic link. - Issue #3554: ctypes.string_at and ctypes.wstring_at did call Python api functions without holding the GIL, which could lead to a fatal error when they failed. - Issue #2234: distutils failed for some versions of the cygwin compiler. The version reported by these tools does not necessarily follow the python version numbering scheme, so the module is less strict when parsing it. - Issue #2222: Fixed reference leak when occured os.rename() fails unicode conversion on 2nd parameter. (windows only) - Issue #3134: shutil referenced undefined WindowsError symbol. - Issue #1342811: Fix leak in Tkinter.Menu.delete. Commands associated to menu entries were not deleted. - Issue #799428: Fix Tkinter.Misc._nametowidget to unwrap Tcl command objects. - Issue #3339: dummy_thread.acquire() could return None which is not a valid return value. - Issue #3116 and #1792: Fix quadratic behavior in marshal.dumps(). - Issue #2682: ctypes callback functions no longer contain a cyclic reference to themselves. - Issue #2670: Fix a failure in urllib2.build_opener(), when passed two handlers that derive the same default base class. - Issue #2495: tokenize.untokenize now inserts a space between two consecutive string literals; previously, ["" ""] was rendered as [""""], which is incorrect python code. - Issue #2482: Make sure that the coefficient of a Decimal is always stored as a str instance, not as a unicode instance. This ensures that str(Decimal) is always an instance of str. This fixes a regression from Python 2.5.1 to Python 2.5.2. - Issue #2478: fix failure of decimal.Decimal(0).sqrt() - Issue #2432: give DictReader the dialect and line_num attributes advertised in the docs. - Issue #1747858: Fix chown to work with large uid's and gid's on 64-bit platforms. - Bug #2220: handle rlcompleter attribute match failure more gracefully. - Bug #1725737: In distutil's sdist, exclude RCS, CVS etc. also in the root directory, and also exclude .hg, .git, .bzr, and _darcs. - Bug #1389051: imaplib causes excessive memory fragmentation when reading large messages. - Bug #1389051, 1092502: fix excessively large memory allocations when calling .read() on a socket object wrapped with makefile(). - Bug #1433694: minidom's .normalize() failed to set .nextSibling for last child element. - Issue #2791: subprocess.Popen.communicate explicitly closes its stdout and stderr fds rather than leaving them open until the instance is destroyed. - Issue #2632: Prevent socket.read(bignumber) from over allocating memory in the common case when the data is returned from the underlying socket in increments much smaller than bignumber. - Issue #1857: subprocess.Popen.poll gained an additional _deadstate keyword argument in python 2.5, this broke code that subclassed Popen to include its own poll method. Fixed my moving _deadstate to an _internal_poll method. - Issue #2113: Fix error in subprocess.Popen if the select system call is interrupted by a signal. - Issue #874900: after an os.fork() call the threading module state is cleaned up in the child process to prevent deadlock and report proper thread counts if the new process uses the threading module. - Issue #3309: Fix bz2.BZFile iterator to release its internal lock properly when raising an exception due to the bz2file being closed. Prevents a deadlock. Extension Modules ----------------- - Issue #1040026: Fix os.times result on systems where HZ is incorrect. - Issue #4228: Pack negative values the same way as 2.4 in struct's L format. - Security Issue #2: imageop did not validate arguments correctly and could segfault as a result. - Issue 3886: [CVE-2008-2316] Possible integer overflow in the _hashopenssl module was closed. - Issue 1179: [CVE-2007-4965] Integer overflow in imageop module. Also fixes rgbimg module. - Issue #3205: When iterating over a BZ2File fails allocating memory, raise a MemoryError rather than silently stop the iteration. - Patch #2111: Avoid mmap segfault when modifying a PROT_READ block. - zlib.decompressobj().flush(value) no longer crashes the interpreter when passed a value less than or equal to zero. - issue2858: Fix potential memory corruption when bsddb.db.DBEnv.lock_get and other bsddb.db object constructors raised an exception. - Issue #3120: On 64-bit Windows the subprocess module was truncating handles. - Issue #1471: Arguments to fcntl.ioctl are no longer broken on 64-bit OpenBSD and similar platforms due to sign extension. - Issue #3312: Fix two crashes in sqlite3. Tests ----- - Issue #3863: Disabled a unit test of fork being called from a thread when running on platforms known to exhibit OS bugs when attempting that. - Issue #3261: test_cookielib had an improper file encoding specified. - Patch #2232: os.tmpfile might fail on Windows if the user has no permission to create files in the root directory. Documentation ------------- Build ----- - Issue #4368: Don't define _XOPEN_SOURCE on FreeBSD 4.*.
Diffstat (limited to 'lang/python25')
-rw-r--r--lang/python25/MESSAGE.SunOS6
-rw-r--r--lang/python25/Makefile11
-rw-r--r--lang/python25/PLIST.common3
-rw-r--r--lang/python25/distinfo36
-rw-r--r--lang/python25/patches/patch-al27
-rw-r--r--lang/python25/patches/patch-am16
-rw-r--r--lang/python25/patches/patch-aq26
-rw-r--r--lang/python25/patches/patch-at22
-rw-r--r--lang/python25/patches/patch-au8
-rw-r--r--lang/python25/patches/patch-ba119
-rw-r--r--lang/python25/patches/patch-bb21
-rw-r--r--lang/python25/patches/patch-bc17
-rw-r--r--lang/python25/patches/patch-bd15
-rw-r--r--lang/python25/patches/patch-be53
-rw-r--r--lang/python25/patches/patch-bf25
-rw-r--r--lang/python25/patches/patch-bg32
-rw-r--r--lang/python25/patches/patch-bh167
-rw-r--r--lang/python25/patches/patch-bi66
-rw-r--r--lang/python25/patches/patch-bj35
-rw-r--r--lang/python25/patches/patch-bk27
-rw-r--r--lang/python25/patches/patch-ca62
-rw-r--r--lang/python25/patches/patch-cb38
-rw-r--r--lang/python25/patches/patch-cc18
-rw-r--r--lang/python25/patches/patch-cd37
-rw-r--r--lang/python25/patches/patch-ce20
-rw-r--r--lang/python25/patches/patch-da45
-rw-r--r--lang/python25/patches/patch-db108
-rw-r--r--lang/python25/patches/patch-ea59
28 files changed, 43 insertions, 1076 deletions
diff --git a/lang/python25/MESSAGE.SunOS b/lang/python25/MESSAGE.SunOS
index 19c996508c9..f845cf9ef79 100644
--- a/lang/python25/MESSAGE.SunOS
+++ b/lang/python25/MESSAGE.SunOS
@@ -1,8 +1,8 @@
===========================================================================
-$NetBSD: MESSAGE.SunOS,v 1.1 2008/09/13 09:59:35 adrianp Exp $
+$NetBSD: MESSAGE.SunOS,v 1.2 2009/04/11 19:42:23 snj Exp $
-In order for the Python installation to successfuly compile the
-"sunaudiodev" module you must install the SUNWaudh package to have
+In order for the Python installation to successfuly compile the
+"sunaudiodev" module you must install the SUNWaudh package to have
the necessary headers installed.
===========================================================================
diff --git a/lang/python25/Makefile b/lang/python25/Makefile
index 5d5fb31d8bf..d6f0b4dbcb2 100644
--- a/lang/python25/Makefile
+++ b/lang/python25/Makefile
@@ -1,11 +1,10 @@
-# $NetBSD: Makefile,v 1.13 2009/03/20 18:19:20 joerg Exp $
+# $NetBSD: Makefile,v 1.14 2009/04/11 19:42:23 snj Exp $
-DISTNAME= Python-2.5.2
-PKGNAME= python25-2.5.2
-PKGREVISION= 5
+DISTNAME= Python-2.5.4
+PKGNAME= python25-2.5.4
CATEGORIES= lang python
-MASTER_SITES= ftp://ftp.python.org/pub/python/2.5.2/ \
- http://www.python.org/ftp/python/2.5.2/
+MASTER_SITES= ftp://ftp.python.org/pub/python/2.5.4/ \
+ http://www.python.org/ftp/python/2.5.4/
EXTRACT_SUFX= .tar.bz2
MAINTAINER= recht@NetBSD.org
diff --git a/lang/python25/PLIST.common b/lang/python25/PLIST.common
index 8a24cae6fa5..febe57da4a9 100644
--- a/lang/python25/PLIST.common
+++ b/lang/python25/PLIST.common
@@ -1,4 +1,4 @@
-@comment $NetBSD: PLIST.common,v 1.3 2008/04/25 11:51:13 tnn Exp $
+@comment $NetBSD: PLIST.common,v 1.4 2009/04/11 19:42:23 snj Exp $
bin/pydoc${PY_VER_SUFFIX}
bin/python${PY_VER_SUFFIX}
bin/python${PY_VER_SUFFIX}-config
@@ -2138,7 +2138,6 @@ lib/python${PY_VER_SUFFIX}/test/output/test_profile
lib/python${PY_VER_SUFFIX}/test/output/test_pty
lib/python${PY_VER_SUFFIX}/test/output/test_pyexpat
lib/python${PY_VER_SUFFIX}/test/output/test_regex
-lib/python${PY_VER_SUFFIX}/test/output/test_resource
lib/python${PY_VER_SUFFIX}/test/output/test_rgbimg
lib/python${PY_VER_SUFFIX}/test/output/test_scope
lib/python${PY_VER_SUFFIX}/test/output/test_signal
diff --git a/lang/python25/distinfo b/lang/python25/distinfo
index 7094cc81531..0c52dc4b1fb 100644
--- a/lang/python25/distinfo
+++ b/lang/python25/distinfo
@@ -1,8 +1,8 @@
-$NetBSD: distinfo,v 1.7 2008/12/17 12:49:51 tron Exp $
+$NetBSD: distinfo,v 1.8 2009/04/11 19:42:23 snj Exp $
-SHA1 (Python-2.5.2.tar.bz2) = 4755d212f50af704c20224a6966e23acc5aea60f
-RMD160 (Python-2.5.2.tar.bz2) = b23b02739833e6730799c5866e2b77aae884b63f
-Size (Python-2.5.2.tar.bz2) = 9807597 bytes
+SHA1 (Python-2.5.4.tar.bz2) = 0f2e819d6381f72f26c734e00a6780b3933ea404
+RMD160 (Python-2.5.4.tar.bz2) = 3a76c83464c3b1c38a60351ab054e33ac7195663
+Size (Python-2.5.4.tar.bz2) = 9821313 bytes
SHA1 (patch-aa) = d44e67645dc86ff14f5daf5705de02c6f330cc48
SHA1 (patch-ab) = d35025df83e70d129f9fbcd277652b0eea83b026
SHA1 (patch-ac) = 4de5b8dc20b41dc3bb4acd38011ef59570318d3f
@@ -13,32 +13,12 @@ SHA1 (patch-ah) = 98e9fa55c2af38d8032398cae693492c199dc5fa
SHA1 (patch-ai) = a89bee00860910f53a23b1c670d9c091846a03c1
SHA1 (patch-aj) = a75d680a6b8b1ad3c9222dcb841f4fb10db6d16d
SHA1 (patch-ak) = 948362c15ad59abeef46971f9b870b70655a62c7
-SHA1 (patch-al) = 85063c81a98de221eb5357aa2a0b172feb3ed950
-SHA1 (patch-am) = 8968853066d2d1a4f76a7ee4ce328ba372d19666
+SHA1 (patch-al) = 6247e3f85d555bae7850befbd7bfffbb233cecb3
+SHA1 (patch-am) = 7985a6e2edd3eef86bd2833a36818e3e1e315a25
SHA1 (patch-an) = 17b4e17b3b562c29a050e9bb20447084ce82b8ab
SHA1 (patch-ao) = 9bbd5561c010e0a1ab8e0a70d27a5f77fd2089d2
SHA1 (patch-ap) = b864db92761c843a91374663bd2dbcfa57b317cf
-SHA1 (patch-aq) = e1fb02560e95ce4d37e2894b4299c3eb3a1167d8
SHA1 (patch-ar) = 2a0c3f9a798afdfda7af4823e67579b2e000c072
-SHA1 (patch-at) = bb2ef2e30ebb6feb6ec796bc4cf6f2d4147353c1
-SHA1 (patch-au) = e3babf3537ed8cbed1720f1afe964914f4ae289f
+SHA1 (patch-at) = 6fdd64ce70eb8c2de5336f3415f45bc467e46373
+SHA1 (patch-au) = c1a759765095d246151ba027ed06f423e05c9218
SHA1 (patch-av) = a1d41cb3a93879d54f0964ff84a63a297c333156
-SHA1 (patch-ba) = 23378360d4fb0d22a2e5f98993832888a672a748
-SHA1 (patch-bb) = 26b1426df46b947417ed755f1e61d238071e49f7
-SHA1 (patch-bc) = bfa88d1198b06737297e97e57ee98692096e0df5
-SHA1 (patch-bd) = 491dcb6731db871af2eb8bf418cd369a4af3b2b7
-SHA1 (patch-be) = ba2f8d299b86560172e55af067763e9224c41e3b
-SHA1 (patch-bf) = 58809f824473be7a16cc0e7c4d0b132e023aea4c
-SHA1 (patch-bg) = bf9dc3b3d51ab963804263e170c4247d19ab0d91
-SHA1 (patch-bh) = 96a2675f266144a6027fdc7445b9f93d0fdbe4eb
-SHA1 (patch-bi) = 1fb1c40669fc54fc6d181f706c614d67fe16d42b
-SHA1 (patch-bj) = dc2e3971dd4fd623a68cc9940738619cad4629b1
-SHA1 (patch-bk) = 61300258bdc9ee19195c5c7f62135d20d487507e
-SHA1 (patch-ca) = 37f59fc143e69cbf458d2930f846156553f9178b
-SHA1 (patch-cb) = 570ffec0f57acec984a401306f48c24e2128d9fe
-SHA1 (patch-cc) = 04289f010fb0c0aef37dbfb1a5be77aaa8725b95
-SHA1 (patch-cd) = 24a2a9975c4393400935b885f1ec9fc8996632a0
-SHA1 (patch-ce) = 2a8cae6c30be57bb9e389c1957609f7b42317f69
-SHA1 (patch-da) = 2030f74fb0d6134e6bb4203536dc56d8c0d38c3a
-SHA1 (patch-db) = 6ff4a9d4e33c2e08362d4417330eba47c170a84b
-SHA1 (patch-ea) = 7c4b01d002b8e081967216c2e79f2cec9df24005
diff --git a/lang/python25/patches/patch-al b/lang/python25/patches/patch-al
index 3798a0e1ad9..f69a242a6f7 100644
--- a/lang/python25/patches/patch-al
+++ b/lang/python25/patches/patch-al
@@ -1,17 +1,8 @@
-$NetBSD: patch-al,v 1.4 2008/12/17 12:49:51 tron Exp $
+$NetBSD: patch-al,v 1.5 2009/04/11 19:42:23 snj Exp $
---- configure.orig 2008-02-13 13:17:17.000000000 -0600
-+++ configure
-@@ -2019,6 +2019,8 @@ _ACEOF
- # Marc Recht
- NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6A-S)
- define_xopen_source=no;;
-+ NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6[A-S])
-+ define_xopen_source=no;;
- # On Solaris 2.6, sys/wait.h is inconsistent in the usage
- # of union __?sigval. Reported by Stuart Bishop.
- SunOS/5.6)
-@@ -4018,17 +4020,18 @@ _ACEOF
+--- configure.orig 2008-12-13 06:13:52.000000000 -0800
++++ configure 2009-03-20 14:28:16.000000000 -0700
+@@ -4014,17 +4014,18 @@ _ACEOF
RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
INSTSONAME="$LDLIBRARY".$SOVERSION
;;
@@ -36,7 +27,7 @@ $NetBSD: patch-al,v 1.4 2008/12/17 12:49:51 tron Exp $
hp*|HP*)
case `uname -m` in
ia64)
-@@ -4538,7 +4541,12 @@ echo "${ECHO_T}$ac_cv_no_strict_aliasing
+@@ -4534,7 +4535,12 @@ echo "${ECHO_T}$ac_cv_no_strict_aliasing
;;
# is there any other compiler on Darwin besides gcc?
Darwin*)
@@ -50,7 +41,7 @@ $NetBSD: patch-al,v 1.4 2008/12/17 12:49:51 tron Exp $
if test "${enable_universalsdk}"; then
BASECFLAGS="-arch ppc -arch i386 -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
fi
-@@ -11540,12 +11548,12 @@ then
+@@ -11536,12 +11542,12 @@ then
LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
else
# No framework, use the Python app as bundle-loader
@@ -66,7 +57,7 @@ $NetBSD: patch-al,v 1.4 2008/12/17 12:49:51 tron Exp $
BSD/OS*/4*) LDSHARED="gcc -shared";;
FreeBSD*)
if [ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]
-@@ -11569,6 +11577,7 @@ then
+@@ -11565,6 +11571,7 @@ then
esac
fi;;
NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
@@ -74,7 +65,7 @@ $NetBSD: patch-al,v 1.4 2008/12/17 12:49:51 tron Exp $
OpenUNIX*|UnixWare*)
if test "$GCC" = "yes"
then LDSHARED='$(CC) -shared'
-@@ -11604,6 +11613,7 @@ then
+@@ -11600,6 +11607,7 @@ then
Linux*|GNU*) CCSHARED="-fPIC";;
BSD/OS*/4*) CCSHARED="-fpic";;
FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
@@ -82,7 +73,7 @@ $NetBSD: patch-al,v 1.4 2008/12/17 12:49:51 tron Exp $
OpenUNIX*|UnixWare*)
if test "$GCC" = "yes"
then CCSHARED="-fPIC"
-@@ -11661,6 +11671,7 @@ then
+@@ -11657,6 +11665,7 @@ then
then
LINKFORSHARED="-Wl,--export-dynamic"
fi;;
diff --git a/lang/python25/patches/patch-am b/lang/python25/patches/patch-am
index b445c0d99e8..1d91fe656d5 100644
--- a/lang/python25/patches/patch-am
+++ b/lang/python25/patches/patch-am
@@ -1,7 +1,7 @@
-$NetBSD: patch-am,v 1.1.1.1 2008/04/24 01:50:58 tnn Exp $
+$NetBSD: patch-am,v 1.2 2009/04/11 19:42:23 snj Exp $
---- setup.py.orig 2008-02-05 00:41:02.000000000 +0100
-+++ setup.py
+--- setup.py.orig 2008-10-16 11:58:19.000000000 -0700
++++ setup.py 2009-03-20 15:01:44.000000000 -0700
@@ -15,7 +15,7 @@ from distutils.command.install import in
from distutils.command.install_lib import install_lib
@@ -30,7 +30,7 @@ $NetBSD: patch-am,v 1.1.1.1 2008/04/24 01:50:58 tnn Exp $
# Add paths specified in the environment variables LDFLAGS and
# CPPFLAGS for header and library files.
-@@ -533,9 +539,7 @@ class PyBuildExt(build_ext):
+@@ -534,9 +540,7 @@ class PyBuildExt(build_ext):
if krb5_h:
ssl_incs += krb5_h
ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
@@ -41,7 +41,7 @@ $NetBSD: patch-am,v 1.1.1.1 2008/04/24 01:50:58 tnn Exp $
if (ssl_incs is not None and
ssl_libs is not None):
-@@ -608,269 +612,51 @@ class PyBuildExt(build_ext):
+@@ -609,269 +613,51 @@ class PyBuildExt(build_ext):
# a release. Most open source OSes come with one or more
# versions of BerkeleyDB already installed.
@@ -233,7 +233,7 @@ $NetBSD: patch-am,v 1.1.1.1 2008/04/24 01:50:58 tnn Exp $
- break
- else:
- if sqlite_setup_debug:
-- print "%s: version %d is too old, need >= %s"%(d,
+- print "%s: version %r is too old, need >= %r"%(d,
- sqlite_version, MIN_SQLITE_VERSION)
- elif sqlite_setup_debug:
- print "sqlite: %s had no SQLITE_VERSION"%(f,)
@@ -350,7 +350,7 @@ $NetBSD: patch-am,v 1.1.1.1 2008/04/24 01:50:58 tnn Exp $
# The standard Unix dbm module:
if platform not in ['cygwin']:
-@@ -883,6 +669,13 @@ class PyBuildExt(build_ext):
+@@ -884,6 +670,13 @@ class PyBuildExt(build_ext):
exts.append( Extension('dbm', ['dbmmodule.c'],
define_macros=[('HAVE_NDBM_H',None)],
libraries = ndbm_libs ) )
@@ -364,7 +364,7 @@ $NetBSD: patch-am,v 1.1.1.1 2008/04/24 01:50:58 tnn Exp $
elif (self.compiler.find_library_file(lib_dirs, 'gdbm')
and find_file("gdbm/ndbm.h", inc_dirs, []) is not None):
exts.append( Extension('dbm', ['dbmmodule.c'],
-@@ -1535,8 +1328,8 @@ def main():
+@@ -1536,8 +1329,8 @@ def main():
ext_modules=[Extension('_struct', ['_struct.c'])],
# Scripts to install
diff --git a/lang/python25/patches/patch-aq b/lang/python25/patches/patch-aq
deleted file mode 100644
index 12187749ba7..00000000000
--- a/lang/python25/patches/patch-aq
+++ /dev/null
@@ -1,26 +0,0 @@
-$NetBSD: patch-aq,v 1.1.1.1 2008/04/24 01:50:58 tnn Exp $
-
-Fixed warnings from the portability checks:
-- test(1) doesn't need to know the == operator.
-- $RANDOM is not required by POSIX.
-
---- Tools/faqwiz/move-faqwiz.sh.orig 2002-03-18 03:56:23.000000000 -0500
-+++ Tools/faqwiz/move-faqwiz.sh
-@@ -9,7 +9,7 @@
- # blackjesus:~> ./move-faqwiz.sh 2\.1 3\.2
- # Moving FAQ question 02.001 to 03.002
-
--if [ x$2 == x ]; then
-+if [ $# -ne 2 ]; then
- echo "Need 2 args: original_version final_version."
- exit 2
- fi
-@@ -28,7 +28,7 @@ cut_n_pad $1 1 prefix1
- cut_n_pad $1 2 suffix1
- cut_n_pad $2 1 prefix2
- cut_n_pad $2 2 suffix2
--tmpfile=tmp$RANDOM.tmp
-+tmpfile=tmp-$$-$RANDOM.tmp
- file1=faq$prefix1.$suffix1.htp
- file2=faq$prefix2.$suffix2.htp
-
diff --git a/lang/python25/patches/patch-at b/lang/python25/patches/patch-at
index 0a09ce43a34..a4c44c1068a 100644
--- a/lang/python25/patches/patch-at
+++ b/lang/python25/patches/patch-at
@@ -1,25 +1,13 @@
-$NetBSD: patch-at,v 1.2 2008/08/30 10:02:33 tron Exp $
+$NetBSD: patch-at,v 1.3 2009/04/11 19:42:23 snj Exp $
-The first change is part of the fix for CVE-2008-2315 taken from Gentto.
-
---- Modules/mmapmodule.c.orig 2006-08-22 14:57:07.000000000 +0100
-+++ Modules/mmapmodule.c 2008-08-30 10:16:13.000000000 +0100
-@@ -223,7 +223,7 @@
- return(NULL);
-
- /* silently 'adjust' out-of-range requests */
-- if ((self->pos + num_bytes) > self->size) {
-+ if (num_bytes > self->size - self->pos) {
- num_bytes -= (self->pos+num_bytes) - self->size;
- }
- result = Py_BuildValue("s#", self->data+self->pos, num_bytes);
-@@ -449,6 +449,9 @@
+--- Modules/mmapmodule.c.orig 2009-03-20 15:07:16.000000000 -0700
++++ Modules/mmapmodule.c 2009-03-20 15:07:34.000000000 -0700
+@@ -449,6 +449,8 @@ mmap_resize_method(mmap_object *self,
#ifdef MREMAP_MAYMOVE
newmap = mremap(self->data, self->size, new_size, MREMAP_MAYMOVE);
+#elif defined(__NetBSD__)
-+ newmap = mremap(self->data, self->size, self->data, new_size, 0);
-+
++ newmap = mremap(self->data, self->size, self->data, new_size, 0);
#else
newmap = mremap(self->data, self->size, new_size, 0);
#endif
diff --git a/lang/python25/patches/patch-au b/lang/python25/patches/patch-au
index 895dbe2552f..64453682356 100644
--- a/lang/python25/patches/patch-au
+++ b/lang/python25/patches/patch-au
@@ -1,10 +1,10 @@
-$NetBSD: patch-au,v 1.2 2008/06/27 19:57:49 tron Exp $
+$NetBSD: patch-au,v 1.3 2009/04/11 19:42:23 snj Exp $
---- Makefile.pre.in.orig 2007-12-05 14:43:57.000000000 -0600
-+++ Makefile.pre.in
+--- Makefile.pre.in.orig 2008-09-21 17:22:44.000000000 -0700
++++ Makefile.pre.in 2009-03-20 15:09:36.000000000 -0700
@@ -376,6 +376,12 @@ libpython$(VERSION).so: $(LIBRARY_OBJS)
libpython$(VERSION).sl: $(LIBRARY_OBJS)
- $(LDSHARED) -o $@ $(LIBRARY_OBJS) $(SHLIBS) $(LIBC) $(LIBM)
+ $(LDSHARED) $(LDFLAGS) -o $@ $(LIBRARY_OBJS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST)
+libpython$(VERSION).dylib: $(LIBRARY_OBJS)
+ $(LINKCC) -dynamiclib -install_name $(LIBDIR)/$@ \
diff --git a/lang/python25/patches/patch-ba b/lang/python25/patches/patch-ba
deleted file mode 100644
index 3188215190a..00000000000
--- a/lang/python25/patches/patch-ba
+++ /dev/null
@@ -1,119 +0,0 @@
-$NetBSD: patch-ba,v 1.1 2008/08/30 10:02:33 tron Exp $
-
-Patch for CVE-2008-2315 taken from Gentoo.
-
---- Objects/unicodeobject.c.orig 2007-11-02 22:46:38.000000000 +0000
-+++ Objects/unicodeobject.c 2008-08-30 10:16:13.000000000 +0100
-@@ -239,6 +239,11 @@
- return unicode_empty;
- }
-
-+ /* Ensure we won't overflow the size. */
-+ if (length > ((PY_SSIZE_T_MAX / sizeof(Py_UNICODE)) - 1)) {
-+ return (PyUnicodeObject *)PyErr_NoMemory();
-+ }
-+
- /* Unicode freelist & memory allocation */
- if (unicode_freelist) {
- unicode = unicode_freelist;
-@@ -1091,6 +1096,9 @@
- char * out;
- char * start;
-
-+ if (cbAllocated / 5 != size)
-+ return PyErr_NoMemory();
-+
- if (size == 0)
- return PyString_FromStringAndSize(NULL, 0);
-
-@@ -1689,8 +1697,9 @@
- {
- PyObject *v;
- unsigned char *p;
-+ Py_ssize_t nsize, bytesize;
- #ifdef Py_UNICODE_WIDE
-- int i, pairs;
-+ Py_ssize_t i, pairs;
- #else
- const int pairs = 0;
- #endif
-@@ -1713,8 +1722,15 @@
- if (s[i] >= 0x10000)
- pairs++;
- #endif
-- v = PyString_FromStringAndSize(NULL,
-- 2 * (size + pairs + (byteorder == 0)));
-+ /* 2 * (size + pairs + (byteorder == 0)) */
-+ if (size > PY_SSIZE_T_MAX ||
-+ size > PY_SSIZE_T_MAX - pairs - (byteorder == 0))
-+ return PyErr_NoMemory();
-+ nsize = (size + pairs + (byteorder == 0));
-+ bytesize = nsize * 2;
-+ if (bytesize / 2 != nsize)
-+ return PyErr_NoMemory();
-+ v = PyString_FromStringAndSize(NULL, bytesize);
- if (v == NULL)
- return NULL;
-
-@@ -2042,6 +2058,11 @@
- char *p;
-
- static const char *hexdigit = "0123456789abcdef";
-+#ifdef Py_UNICODE_WIDE
-+ const Py_ssize_t expandsize = 10;
-+#else
-+ const Py_ssize_t expandsize = 6;
-+#endif
-
- /* Initial allocation is based on the longest-possible unichr
- escape.
-@@ -2057,13 +2078,12 @@
- escape.
- */
-
-+ if (size > (PY_SSIZE_T_MAX - 2 - 1) / expandsize)
-+ return PyErr_NoMemory();
-+
- repr = PyString_FromStringAndSize(NULL,
- 2
--#ifdef Py_UNICODE_WIDE
-- + 10*size
--#else
-- + 6*size
--#endif
-+ + expandsize*size
- + 1);
- if (repr == NULL)
- return NULL;
-@@ -2304,12 +2324,16 @@
- char *q;
-
- static const char *hexdigit = "0123456789abcdef";
--
- #ifdef Py_UNICODE_WIDE
-- repr = PyString_FromStringAndSize(NULL, 10 * size);
-+ const Py_ssize_t expandsize = 10;
- #else
-- repr = PyString_FromStringAndSize(NULL, 6 * size);
-+ const Py_ssize_t expandsize = 6;
- #endif
-+
-+ if (size > PY_SSIZE_T_MAX / expandsize)
-+ return PyErr_NoMemory();
-+
-+ repr = PyString_FromStringAndSize(NULL, expandsize * size);
- if (repr == NULL)
- return NULL;
- if (size == 0)
-@@ -4719,6 +4743,11 @@
- return self;
- }
-
-+ if (left > PY_SSIZE_T_MAX - self->length ||
-+ right > PY_SSIZE_T_MAX - (left + self->length)) {
-+ PyErr_SetString(PyExc_OverflowError, "padded string is too long");
-+ return NULL;
-+ }
- u = _PyUnicode_New(left + self->length + right);
- if (u) {
- if (left)
diff --git a/lang/python25/patches/patch-bb b/lang/python25/patches/patch-bb
deleted file mode 100644
index 5b50f048265..00000000000
--- a/lang/python25/patches/patch-bb
+++ /dev/null
@@ -1,21 +0,0 @@
-$NetBSD: patch-bb,v 1.1 2008/08/30 10:02:33 tron Exp $
-
-Patch for CVE-2008-2315 taken from Gentoo.
-
---- Objects/tupleobject.c.orig 2006-08-12 18:03:09.000000000 +0100
-+++ Objects/tupleobject.c 2008-08-30 10:16:13.000000000 +0100
-@@ -60,11 +60,12 @@
- Py_ssize_t nbytes = size * sizeof(PyObject *);
- /* Check for overflow */
- if (nbytes / sizeof(PyObject *) != (size_t)size ||
-- (nbytes += sizeof(PyTupleObject) - sizeof(PyObject *))
-- <= 0)
-+ (nbytes > PY_SSIZE_T_MAX - sizeof(PyTupleObject) - sizeof(PyObject *)))
- {
- return PyErr_NoMemory();
- }
-+ nbytes += sizeof(PyTupleObject) - sizeof(PyObject *);
-+
- op = PyObject_GC_NewVar(PyTupleObject, &PyTuple_Type, size);
- if (op == NULL)
- return NULL;
diff --git a/lang/python25/patches/patch-bc b/lang/python25/patches/patch-bc
deleted file mode 100644
index 975bfb0b0a1..00000000000
--- a/lang/python25/patches/patch-bc
+++ /dev/null
@@ -1,17 +0,0 @@
-$NetBSD: patch-bc,v 1.1 2008/08/30 10:02:33 tron Exp $
-
-Patch for CVE-2008-2315 taken from Gentoo.
-
---- Objects/bufferobject.c.orig 2008-02-14 11:26:18.000000000 +0000
-+++ Objects/bufferobject.c 2008-08-30 10:16:13.000000000 +0100
-@@ -427,6 +427,10 @@
- count = 0;
- if (!get_buf(self, &ptr, &size, ANY_BUFFER))
- return NULL;
-+ if (count > PY_SSIZE_T_MAX / size) {
-+ PyErr_SetString(PyExc_MemoryError, "result too large");
-+ return NULL;
-+ }
- ob = PyString_FromStringAndSize(NULL, size * count);
- if ( ob == NULL )
- return NULL;
diff --git a/lang/python25/patches/patch-bd b/lang/python25/patches/patch-bd
deleted file mode 100644
index 06ae261508e..00000000000
--- a/lang/python25/patches/patch-bd
+++ /dev/null
@@ -1,15 +0,0 @@
-$NetBSD: patch-bd,v 1.1 2008/08/30 10:02:33 tron Exp $
-
-Patch for CVE-2008-2315 taken from Gentoo.
-
---- Objects/longobject.c.orig 2007-05-07 19:30:48.000000000 +0100
-+++ Objects/longobject.c 2008-08-30 10:16:13.000000000 +0100
-@@ -70,6 +70,8 @@
- PyErr_NoMemory();
- return NULL;
- }
-+ /* XXX(nnorwitz): This can overflow --
-+ PyObject_NEW_VAR / _PyObject_VAR_SIZE need to detect overflow */
- return PyObject_NEW_VAR(PyLongObject, &PyLong_Type, size);
- }
-
diff --git a/lang/python25/patches/patch-be b/lang/python25/patches/patch-be
deleted file mode 100644
index 81798e3a973..00000000000
--- a/lang/python25/patches/patch-be
+++ /dev/null
@@ -1,53 +0,0 @@
-$NetBSD: patch-be,v 1.1 2008/08/30 10:02:33 tron Exp $
-
-Patch for CVE-2008-2315 taken from Gentoo.
-
---- Objects/stringobject.c.orig 2007-11-07 01:19:49.000000000 +0000
-+++ Objects/stringobject.c 2008-08-30 10:16:13.000000000 +0100
-@@ -71,6 +71,11 @@
- return (PyObject *)op;
- }
-
-+ if (size > PY_SSIZE_T_MAX - sizeof(PyStringObject)) {
-+ PyErr_SetString(PyExc_OverflowError, "string is too large");
-+ return NULL;
-+ }
-+
- /* Inline PyObject_NewVar */
- op = (PyStringObject *)PyObject_MALLOC(sizeof(PyStringObject) + size);
- if (op == NULL)
-@@ -106,7 +111,7 @@
-
- assert(str != NULL);
- size = strlen(str);
-- if (size > PY_SSIZE_T_MAX) {
-+ if (size > PY_SSIZE_T_MAX - sizeof(PyStringObject)) {
- PyErr_SetString(PyExc_OverflowError,
- "string is too long for a Python string");
- return NULL;
-@@ -967,14 +972,24 @@
- Py_INCREF(a);
- return (PyObject *)a;
- }
-+ /* Check that string sizes are not negative, to prevent an
-+ overflow in cases where we are passed incorrectly-created
-+ strings with negative lengths (due to a bug in other code).
-+ */
- size = a->ob_size + b->ob_size;
-- if (size < 0) {
-+ if (a->ob_size < 0 || b->ob_size < 0 ||
-+ a->ob_size > PY_SSIZE_T_MAX - b->ob_size) {
- PyErr_SetString(PyExc_OverflowError,
- "strings are too large to concat");
- return NULL;
- }
-
- /* Inline PyObject_NewVar */
-+ if (size > PY_SSIZE_T_MAX - sizeof(PyStringObject)) {
-+ PyErr_SetString(PyExc_OverflowError,
-+ "strings are too large to concat");
-+ return NULL;
-+ }
- op = (PyStringObject *)PyObject_MALLOC(sizeof(PyStringObject) + size);
- if (op == NULL)
- return PyErr_NoMemory();
diff --git a/lang/python25/patches/patch-bf b/lang/python25/patches/patch-bf
deleted file mode 100644
index ff7211e0a2c..00000000000
--- a/lang/python25/patches/patch-bf
+++ /dev/null
@@ -1,25 +0,0 @@
-$NetBSD: patch-bf,v 1.1 2008/08/30 10:02:33 tron Exp $
-
-Patch for CVE-2008-2315 taken from Gentoo.
-
---- Lib/test/seq_tests.py.orig 2007-11-12 20:04:41.000000000 +0000
-+++ Lib/test/seq_tests.py 2008-08-30 10:16:13.000000000 +0100
-@@ -307,11 +307,13 @@
- self.assertEqual(id(s), id(s*1))
-
- def test_bigrepeat(self):
-- x = self.type2test([0])
-- x *= 2**16
-- self.assertRaises(MemoryError, x.__mul__, 2**16)
-- if hasattr(x, '__imul__'):
-- self.assertRaises(MemoryError, x.__imul__, 2**16)
-+ import sys
-+ if sys.maxint <= 2147483647:
-+ x = self.type2test([0])
-+ x *= 2**16
-+ self.assertRaises(MemoryError, x.__mul__, 2**16)
-+ if hasattr(x, '__imul__'):
-+ self.assertRaises(MemoryError, x.__imul__, 2**16)
-
- def test_subscript(self):
- a = self.type2test([10, 11])
diff --git a/lang/python25/patches/patch-bg b/lang/python25/patches/patch-bg
deleted file mode 100644
index 82b6d143a38..00000000000
--- a/lang/python25/patches/patch-bg
+++ /dev/null
@@ -1,32 +0,0 @@
-$NetBSD: patch-bg,v 1.1 2008/08/30 10:02:33 tron Exp $
-
-Patch for CVE-2008-2315 taken from Gentoo.
-
---- Lib/test/test_strop.py.orig 2002-07-31 00:27:12.000000000 +0100
-+++ Lib/test/test_strop.py 2008-08-30 10:16:13.000000000 +0100
-@@ -115,6 +115,25 @@
- strop.uppercase
- strop.whitespace
-
-+ @test_support.precisionbigmemtest(size=test_support._2G - 1, memuse=5)
-+ def test_stropjoin_huge_list(self, size):
-+ a = "A" * size
-+ try:
-+ r = strop.join([a, a], a)
-+ except OverflowError:
-+ pass
-+ else:
-+ self.assertEquals(len(r), len(a) * 3)
-+
-+ @test_support.precisionbigmemtest(size=test_support._2G - 1, memuse=1)
-+ def test_stropjoin_huge_tup(self, size):
-+ a = "A" * size
-+ try:
-+ r = strop.join((a, a), a)
-+ except OverflowError:
-+ pass # acceptable on 32-bit
-+ else:
-+ self.assertEquals(len(r), len(a) * 3)
-
- transtable = '\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037 !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`xyzdefghijklmnopqrstuvwxyz{|}~\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377'
-
diff --git a/lang/python25/patches/patch-bh b/lang/python25/patches/patch-bh
deleted file mode 100644
index 2f1ecfb0384..00000000000
--- a/lang/python25/patches/patch-bh
+++ /dev/null
@@ -1,167 +0,0 @@
-$NetBSD: patch-bh,v 1.1 2008/08/30 10:02:33 tron Exp $
-
-Patch for CVE-2008-2315 taken from Gentoo.
-
---- Lib/test/test_bigmem.py.orig 2007-11-30 21:53:17.000000000 +0000
-+++ Lib/test/test_bigmem.py 2008-08-30 10:16:13.000000000 +0100
-@@ -1,5 +1,5 @@
- from test import test_support
--from test.test_support import bigmemtest, _1G, _2G
-+from test.test_support import bigmemtest, _1G, _2G, _4G, precisionbigmemtest
-
- import unittest
- import operator
-@@ -54,6 +54,22 @@
- self.assertEquals(s[lpadsize:-rpadsize], SUBSTR)
- self.assertEquals(s.strip(), SUBSTR.strip())
-
-+ @precisionbigmemtest(size=_2G - 1, memuse=1)
-+ def test_center_unicode(self, size):
-+ SUBSTR = u' abc def ghi'
-+ try:
-+ s = SUBSTR.center(size)
-+ except OverflowError:
-+ pass # acceptable on 32-bit
-+ else:
-+ self.assertEquals(len(s), size)
-+ lpadsize = rpadsize = (len(s) - len(SUBSTR)) // 2
-+ if len(s) % 2:
-+ lpadsize += 1
-+ self.assertEquals(s[lpadsize:-rpadsize], SUBSTR)
-+ self.assertEquals(s.strip(), SUBSTR.strip())
-+ del s
-+
- @bigmemtest(minsize=_2G, memuse=2)
- def test_count(self, size):
- SUBSTR = ' abc def ghi'
-@@ -70,10 +86,44 @@
- s = '.' * size
- self.assertEquals(len(s.decode('utf-8')), size)
-
-+ def basic_encode_test(self, size, enc, c=u'.', expectedsize=None):
-+ if expectedsize is None:
-+ expectedsize = size
-+
-+ s = c * size
-+ self.assertEquals(len(s.encode(enc)), expectedsize)
-+
- @bigmemtest(minsize=_2G + 2, memuse=3)
- def test_encode(self, size):
-- s = u'.' * size
-- self.assertEquals(len(s.encode('utf-8')), size)
-+ return self.basic_encode_test(size, 'utf-8')
-+
-+ @precisionbigmemtest(size=_4G / 6 + 2, memuse=2)
-+ def test_encode_raw_unicode_escape(self, size):
-+ try:
-+ return self.basic_encode_test(size, 'raw_unicode_escape')
-+ except MemoryError:
-+ pass # acceptable on 32-bit
-+
-+ @precisionbigmemtest(size=_4G / 5 + 70, memuse=3)
-+ def test_encode_utf7(self, size):
-+ try:
-+ return self.basic_encode_test(size, 'utf7')
-+ except MemoryError:
-+ pass # acceptable on 32-bit
-+
-+ @precisionbigmemtest(size=_2G-1, memuse=2)
-+ def test_decodeascii(self, size):
-+ return self.basic_encode_test(size, 'ascii', c='A')
-+
-+ @precisionbigmemtest(size=_4G / 5, memuse=6+2)
-+ def test_unicode_repr_oflw(self, size):
-+ try:
-+ s = u"\uAAAA"*size
-+ r = repr(s)
-+ except MemoryError:
-+ pass # acceptable on 32-bit
-+ else:
-+ self.failUnless(s == eval(r))
-
- @bigmemtest(minsize=_2G, memuse=2)
- def test_endswith(self, size):
-@@ -459,6 +509,11 @@
- self.assertEquals(s.count('\\'), size)
- self.assertEquals(s.count('0'), size * 2)
-
-+ @bigmemtest(minsize=2**32 / 5, memuse=6+2)
-+ def test_unicode_repr(self, size):
-+ s = u"\uAAAA" * size
-+ self.failUnless(len(repr(s)) > size)
-+
- # This test is meaningful even with size < 2G, as long as the
- # doubled string is > 2G (but it tests more if both are > 2G :)
- @bigmemtest(minsize=_1G + 2, memuse=3)
-@@ -642,6 +697,35 @@
- def test_repeat_large(self, size):
- return self.basic_test_repeat(size)
-
-+ @bigmemtest(minsize=_1G - 1, memuse=12)
-+ def test_repeat_large_2(self, size):
-+ return self.basic_test_repeat(size)
-+
-+ @precisionbigmemtest(size=_1G - 1, memuse=9)
-+ def test_from_2G_generator(self, size):
-+ try:
-+ t = tuple(xrange(size))
-+ except MemoryError:
-+ pass # acceptable on 32-bit
-+ else:
-+ count = 0
-+ for item in t:
-+ self.assertEquals(item, count)
-+ count += 1
-+ self.assertEquals(count, size)
-+
-+ @precisionbigmemtest(size=_1G - 25, memuse=9)
-+ def test_from_almost_2G_generator(self, size):
-+ try:
-+ t = tuple(xrange(size))
-+ count = 0
-+ for item in t:
-+ self.assertEquals(item, count)
-+ count += 1
-+ self.assertEquals(count, size)
-+ except MemoryError:
-+ pass # acceptable, expected on 32-bit
-+
- # Like test_concat, split in two.
- def basic_test_repr(self, size):
- t = (0,) * size
-@@ -957,8 +1041,34 @@
- self.assertEquals(l[:10], [1] * 10)
- self.assertEquals(l[-10:], [5] * 10)
-
-+class BufferTest(unittest.TestCase):
-+
-+ @precisionbigmemtest(size=_1G, memuse=4)
-+ def test_repeat(self, size):
-+ try:
-+ b = buffer("AAAA")*size
-+ except MemoryError:
-+ pass # acceptable on 32-bit
-+ else:
-+ count = 0
-+ for c in b:
-+ self.assertEquals(c, 'A')
-+ count += 1
-+ self.assertEquals(count, size*4)
-+
- def test_main():
-- test_support.run_unittest(StrTest, TupleTest, ListTest)
-+ test_support.run_unittest(StrTest, TupleTest, ListTest, BufferTest)
-+
-+# Expected failures (crashers)
-+# del StrTest.test_center_unicode
-+del StrTest.test_decodeascii
-+# del StrTest.test_encode_utf32
-+# del StrTest.test_encode_utf7
-+# del StrTest.test_encode_raw_unicode_escape
-+#
-+# del TupleTest.test_from_2G_generator
-+#
-+# del BufferTest.test_repeat
-
- if __name__ == '__main__':
- if len(sys.argv) > 1:
diff --git a/lang/python25/patches/patch-bi b/lang/python25/patches/patch-bi
deleted file mode 100644
index ba8dd943ed5..00000000000
--- a/lang/python25/patches/patch-bi
+++ /dev/null
@@ -1,66 +0,0 @@
-$NetBSD: patch-bi,v 1.1 2008/08/30 10:02:33 tron Exp $
-
-Patch for CVE-2008-2315 taken from Gentoo.
-
---- Lib/test/test_support.py.orig 2008-01-27 01:24:44.000000000 +0000
-+++ Lib/test/test_support.py 2008-08-30 10:16:13.000000000 +0100
-@@ -33,6 +33,7 @@
- use_resources = None # Flag set to [] by regrtest.py
- max_memuse = 0 # Disable bigmem tests (they will still be run with
- # small sizes, to make sure they work.)
-+real_max_memuse = 0
-
- # _original_stdout is meant to hold stdout at the time regrtest began.
- # This may be "the real" stdout, or IDLE's emulation of stdout, or whatever.
-@@ -323,6 +324,7 @@
- _1M = 1024*1024
- _1G = 1024 * _1M
- _2G = 2 * _1G
-+_4G = 4 * _1G
-
- # Hack to get at the maximum value an internal index can take.
- class _Dummy:
-@@ -333,6 +335,7 @@
- def set_memlimit(limit):
- import re
- global max_memuse
-+ global real_max_memuse
- sizes = {
- 'k': 1024,
- 'm': _1M,
-@@ -344,6 +347,7 @@
- if m is None:
- raise ValueError('Invalid memory limit %r' % (limit,))
- memlimit = int(float(m.group(1)) * sizes[m.group(3).lower()])
-+ real_max_memuse = memlimit
- if memlimit > MAX_Py_ssize_t:
- memlimit = MAX_Py_ssize_t
- if memlimit < _2G - 1:
-@@ -389,6 +393,27 @@
- return wrapper
- return decorator
-
-+def precisionbigmemtest(size, memuse, overhead=5*_1M):
-+ def decorator(f):
-+ def wrapper(self):
-+ if not real_max_memuse:
-+ maxsize = 5147
-+ else:
-+ maxsize = size
-+
-+ if real_max_memuse and real_max_memuse < maxsize * memuse:
-+ if verbose:
-+ sys.stderr.write("Skipping %s because of memory "
-+ "constraint\n" % (f.__name__,))
-+ return
-+
-+ return f(self, maxsize)
-+ wrapper.size = size
-+ wrapper.memuse = memuse
-+ wrapper.overhead = overhead
-+ return wrapper
-+ return decorator
-+
- def bigaddrspacetest(f):
- """Decorator for tests that fill the address space."""
- def wrapper(self):
diff --git a/lang/python25/patches/patch-bj b/lang/python25/patches/patch-bj
deleted file mode 100644
index b5358ed12ef..00000000000
--- a/lang/python25/patches/patch-bj
+++ /dev/null
@@ -1,35 +0,0 @@
-$NetBSD: patch-bj,v 1.1 2008/08/30 10:02:33 tron Exp $
-
-Patch for CVE-2008-2315 taken from Gentoo.
-
---- Modules/stropmodule.c.orig 2008-02-14 11:26:18.000000000 +0000
-+++ Modules/stropmodule.c 2008-08-30 10:16:13.000000000 +0100
-@@ -216,6 +216,13 @@
- return NULL;
- }
- slen = PyString_GET_SIZE(item);
-+ if (slen > PY_SSIZE_T_MAX - reslen ||
-+ seplen > PY_SSIZE_T_MAX - reslen - seplen) {
-+ PyErr_SetString(PyExc_OverflowError,
-+ "input too long");
-+ Py_DECREF(res);
-+ return NULL;
-+ }
- while (reslen + slen + seplen >= sz) {
- if (_PyString_Resize(&res, sz * 2) < 0)
- return NULL;
-@@ -253,6 +260,14 @@
- return NULL;
- }
- slen = PyString_GET_SIZE(item);
-+ if (slen > PY_SSIZE_T_MAX - reslen ||
-+ seplen > PY_SSIZE_T_MAX - reslen - seplen) {
-+ PyErr_SetString(PyExc_OverflowError,
-+ "input too long");
-+ Py_DECREF(res);
-+ Py_XDECREF(item);
-+ return NULL;
-+ }
- while (reslen + slen + seplen >= sz) {
- if (_PyString_Resize(&res, sz * 2) < 0) {
- Py_DECREF(item);
diff --git a/lang/python25/patches/patch-bk b/lang/python25/patches/patch-bk
deleted file mode 100644
index 4bf068cc01a..00000000000
--- a/lang/python25/patches/patch-bk
+++ /dev/null
@@ -1,27 +0,0 @@
-$NetBSD: patch-bk,v 1.1 2008/08/30 10:02:33 tron Exp $
-
-Patch for CVE-2008-2315 taken from Gentoo.
-
---- Modules/gcmodule.c.orig 2006-10-09 20:42:33.000000000 +0100
-+++ Modules/gcmodule.c 2008-08-30 10:16:13.000000000 +0100
-@@ -1318,7 +1318,10 @@
- _PyObject_GC_Malloc(size_t basicsize)
- {
- PyObject *op;
-- PyGC_Head *g = (PyGC_Head *)PyObject_MALLOC(
-+ PyGC_Head *g;
-+ if (basicsize > PY_SSIZE_T_MAX - sizeof(PyGC_Head))
-+ return PyErr_NoMemory();
-+ g = (PyGC_Head *)PyObject_MALLOC(
- sizeof(PyGC_Head) + basicsize);
- if (g == NULL)
- return PyErr_NoMemory();
-@@ -1361,6 +1364,8 @@
- {
- const size_t basicsize = _PyObject_VAR_SIZE(op->ob_type, nitems);
- PyGC_Head *g = AS_GC(op);
-+ if (basicsize > PY_SSIZE_T_MAX - sizeof(PyGC_Head))
-+ return (PyVarObject *)PyErr_NoMemory();
- g = (PyGC_Head *)PyObject_REALLOC(g, sizeof(PyGC_Head) + basicsize);
- if (g == NULL)
- return (PyVarObject *)PyErr_NoMemory();
diff --git a/lang/python25/patches/patch-ca b/lang/python25/patches/patch-ca
deleted file mode 100644
index 1db3615f669..00000000000
--- a/lang/python25/patches/patch-ca
+++ /dev/null
@@ -1,62 +0,0 @@
-$NetBSD: patch-ca,v 1.1 2008/08/30 10:02:33 tron Exp $
-
-Patch for CVE-2008-3142 taken from Gentoo.
-
---- Include/pymem.h.orig 2008-02-14 11:26:18.000000000 +0000
-+++ Include/pymem.h 2008-08-30 10:39:43.000000000 +0100
-@@ -67,8 +67,12 @@
- for malloc(0), which would be treated as an error. Some platforms
- would return a pointer with no memory behind it, which would break
- pymalloc. To solve these problems, allocate an extra byte. */
--#define PyMem_MALLOC(n) malloc((n) ? (n) : 1)
--#define PyMem_REALLOC(p, n) realloc((p), (n) ? (n) : 1)
-+/* Returns NULL to indicate error if a negative size or size larger than
-+ Py_ssize_t can represent is supplied. Helps prevents security holes. */
-+#define PyMem_MALLOC(n) (((n) < 0 || (n) > PY_SSIZE_T_MAX) ? NULL \
-+ : malloc((n) ? (n) : 1))
-+#define PyMem_REALLOC(p, n) (((n) < 0 || (n) > PY_SSIZE_T_MAX) ? NULL \
-+ : realloc((p), (n) ? (n) : 1))
- #define PyMem_FREE free
-
- #endif /* PYMALLOC_DEBUG */
-@@ -77,24 +81,31 @@
- * Type-oriented memory interface
- * ==============================
- *
-- * These are carried along for historical reasons. There's rarely a good
-- * reason to use them anymore (you can just as easily do the multiply and
-- * cast yourself).
-+ * Allocate memory for n objects of the given type. Returns a new pointer
-+ * or NULL if the request was too large or memory allocation failed. Use
-+ * these macros rather than doing the multiplication yourself so that proper
-+ * overflow checking is always done.
- */
-
- #define PyMem_New(type, n) \
-- ( assert((n) <= PY_SIZE_MAX / sizeof(type)) , \
-+ ( ((n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL : \
- ( (type *) PyMem_Malloc((n) * sizeof(type)) ) )
- #define PyMem_NEW(type, n) \
-- ( assert((n) <= PY_SIZE_MAX / sizeof(type)) , \
-+ ( ((n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL : \
- ( (type *) PyMem_MALLOC((n) * sizeof(type)) ) )
-
-+/*
-+ * The value of (p) is always clobbered by this macro regardless of success.
-+ * The caller MUST check if (p) is NULL afterwards and deal with the memory
-+ * error if so. This means the original value of (p) MUST be saved for the
-+ * caller's memory error handler to not lose track of it.
-+ */
- #define PyMem_Resize(p, type, n) \
-- ( assert((n) <= PY_SIZE_MAX / sizeof(type)) , \
-- ( (p) = (type *) PyMem_Realloc((p), (n) * sizeof(type)) ) )
-+ ( (p) = ((n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL : \
-+ (type *) PyMem_Realloc((p), (n) * sizeof(type)) )
- #define PyMem_RESIZE(p, type, n) \
-- ( assert((n) <= PY_SIZE_MAX / sizeof(type)) , \
-- ( (p) = (type *) PyMem_REALLOC((p), (n) * sizeof(type)) ) )
-+ ( (p) = ((n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL : \
-+ (type *) PyMem_REALLOC((p), (n) * sizeof(type)) )
-
- /* PyMem{Del,DEL} are left over from ancient days, and shouldn't be used
- * anymore. They're just confusing aliases for PyMem_{Free,FREE} now.
diff --git a/lang/python25/patches/patch-cb b/lang/python25/patches/patch-cb
deleted file mode 100644
index 6710f26e275..00000000000
--- a/lang/python25/patches/patch-cb
+++ /dev/null
@@ -1,38 +0,0 @@
-$NetBSD: patch-cb,v 1.1 2008/08/30 10:02:33 tron Exp $
-
-Patch for CVE-2008-3142 taken from Gentoo.
-
---- Objects/obmalloc.c.orig 2008-02-14 11:26:18.000000000 +0000
-+++ Objects/obmalloc.c 2008-08-30 10:39:43.000000000 +0100
-@@ -727,6 +727,15 @@
- uint size;
-
- /*
-+ * Limit ourselves to PY_SSIZE_T_MAX bytes to prevent security holes.
-+ * Most python internals blindly use a signed Py_ssize_t to track
-+ * things without checking for overflows or negatives.
-+ * As size_t is unsigned, checking for nbytes < 0 is not required.
-+ */
-+ if (nbytes > PY_SSIZE_T_MAX)
-+ return NULL;
-+
-+ /*
- * This implicitly redirects malloc(0).
- */
- if ((nbytes - 1) < SMALL_REQUEST_THRESHOLD) {
-@@ -1130,6 +1139,15 @@
- if (p == NULL)
- return PyObject_Malloc(nbytes);
-
-+ /*
-+ * Limit ourselves to PY_SSIZE_T_MAX bytes to prevent security holes.
-+ * Most python internals blindly use a signed Py_ssize_t to track
-+ * things without checking for overflows or negatives.
-+ * As size_t is unsigned, checking for nbytes < 0 is not required.
-+ */
-+ if (nbytes > PY_SSIZE_T_MAX)
-+ return NULL;
-+
- pool = POOL_ADDR(p);
- if (Py_ADDRESS_IN_RANGE(p, pool)) {
- /* We're in charge of this block */
diff --git a/lang/python25/patches/patch-cc b/lang/python25/patches/patch-cc
deleted file mode 100644
index e7d9558fa3f..00000000000
--- a/lang/python25/patches/patch-cc
+++ /dev/null
@@ -1,18 +0,0 @@
-$NetBSD: patch-cc,v 1.1 2008/08/30 10:02:33 tron Exp $
-
-Patch for CVE-2008-3142 taken from Gentoo.
-
---- Modules/almodule.c.orig 2006-09-25 07:53:42.000000000 +0100
-+++ Modules/almodule.c 2008-08-30 10:39:43.000000000 +0100
-@@ -1633,9 +1633,11 @@
- if (nvals < 0)
- goto cleanup;
- if (nvals > setsize) {
-+ ALvalue *old_return_set = return_set;
- setsize = nvals;
- PyMem_RESIZE(return_set, ALvalue, setsize);
- if (return_set == NULL) {
-+ return_set = old_return_set;
- PyErr_NoMemory();
- goto cleanup;
- }
diff --git a/lang/python25/patches/patch-cd b/lang/python25/patches/patch-cd
deleted file mode 100644
index 8abf9cfe79f..00000000000
--- a/lang/python25/patches/patch-cd
+++ /dev/null
@@ -1,37 +0,0 @@
-$NetBSD: patch-cd,v 1.1 2008/08/30 10:02:33 tron Exp $
-
-Patch for CVE-2008-3142 taken from Gentoo.
-
---- Modules/arraymodule.c.orig 2008-02-15 19:11:46.000000000 +0000
-+++ Modules/arraymodule.c 2008-08-30 10:39:43.000000000 +0100
-@@ -816,6 +816,7 @@
- array_do_extend(arrayobject *self, PyObject *bb)
- {
- Py_ssize_t size;
-+ char *old_item;
-
- if (!array_Check(bb))
- return array_iter_extend(self, bb);
-@@ -831,10 +832,11 @@
- return -1;
- }
- size = self->ob_size + b->ob_size;
-+ old_item = self->ob_item;
- PyMem_RESIZE(self->ob_item, char, size*self->ob_descr->itemsize);
- if (self->ob_item == NULL) {
-- PyObject_Del(self);
-- PyErr_NoMemory();
-+ self->ob_item = old_item;
-+ PyErr_NoMemory();
- return -1;
- }
- memcpy(self->ob_item + self->ob_size*self->ob_descr->itemsize,
-@@ -886,7 +888,7 @@
- if (size > PY_SSIZE_T_MAX / n) {
- return PyErr_NoMemory();
- }
-- PyMem_Resize(items, char, n * size);
-+ PyMem_RESIZE(items, char, n * size);
- if (items == NULL)
- return PyErr_NoMemory();
- p = items;
diff --git a/lang/python25/patches/patch-ce b/lang/python25/patches/patch-ce
deleted file mode 100644
index 27f9fd6baf8..00000000000
--- a/lang/python25/patches/patch-ce
+++ /dev/null
@@ -1,20 +0,0 @@
-$NetBSD: patch-ce,v 1.1 2008/08/30 10:02:33 tron Exp $
-
-Patch for CVE-2008-3142 taken from Gentoo.
-
---- Modules/selectmodule.c.orig 2006-07-10 02:18:57.000000000 +0100
-+++ Modules/selectmodule.c 2008-08-30 10:39:43.000000000 +0100
-@@ -349,10 +349,12 @@
- {
- Py_ssize_t i, pos;
- PyObject *key, *value;
-+ struct pollfd *old_ufds = self->ufds;
-
- self->ufd_len = PyDict_Size(self->dict);
-- PyMem_Resize(self->ufds, struct pollfd, self->ufd_len);
-+ PyMem_RESIZE(self->ufds, struct pollfd, self->ufd_len);
- if (self->ufds == NULL) {
-+ self->ufds = old_ufds;
- PyErr_NoMemory();
- return 0;
- }
diff --git a/lang/python25/patches/patch-da b/lang/python25/patches/patch-da
deleted file mode 100644
index 499a7c340e7..00000000000
--- a/lang/python25/patches/patch-da
+++ /dev/null
@@ -1,45 +0,0 @@
-$NetBSD: patch-da,v 1.1 2008/08/30 10:02:33 tron Exp $
-
-Patch for CVE-2008-2316 taken from Gentoo.
-
---- Lib/test/test_hashlib.py.orig 2005-08-21 19:45:59.000000000 +0100
-+++ Lib/test/test_hashlib.py 2008-08-30 10:43:27.000000000 +0100
-@@ -9,7 +9,7 @@
- import hashlib
- import unittest
- from test import test_support
--
-+from test.test_support import _4G, precisionbigmemtest
-
- def hexstr(s):
- import string
-@@ -55,7 +55,6 @@
- m2.update(aas + bees + cees)
- self.assertEqual(m1.digest(), m2.digest())
-
--
- def check(self, name, data, digest):
- # test the direct constructors
- computed = getattr(hashlib, name)(data).hexdigest()
-@@ -75,6 +74,21 @@
- self.check('md5', 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',
- 'd174ab98d277d9f5a5611c2c9f419d9f')
-
-+ @precisionbigmemtest(size=_4G + 5, memuse=1)
-+ def test_case_md5_huge(self, size):
-+ if size == _4G + 5:
-+ try:
-+ self.check('md5', 'A'*size, 'c9af2dff37468ce5dfee8f2cfc0a9c6d')
-+ except OverflowError:
-+ pass # 32-bit arch
-+
-+ @precisionbigmemtest(size=_4G - 1, memuse=1)
-+ def test_case_md5_uintmax(self, size):
-+ if size == _4G - 1:
-+ try:
-+ self.check('md5', 'A'*size, '28138d306ff1b8281f1a9067e1a1a2b3')
-+ except OverflowError:
-+ pass # 32-bit arch
-
- # use the three examples from Federal Information Processing Standards
- # Publication 180-1, Secure Hash Standard, 1995 April 17
diff --git a/lang/python25/patches/patch-db b/lang/python25/patches/patch-db
deleted file mode 100644
index db449ee7388..00000000000
--- a/lang/python25/patches/patch-db
+++ /dev/null
@@ -1,108 +0,0 @@
-$NetBSD: patch-db,v 1.1 2008/08/30 10:02:33 tron Exp $
-
-Patch for CVE-2008-2316 taken from Gentoo.
-
---- Modules/_hashopenssl.c.orig 2006-05-29 22:04:52.000000000 +0100
-+++ Modules/_hashopenssl.c 2008-08-30 10:43:27.000000000 +0100
-@@ -19,6 +19,8 @@
- /* EVP is the preferred interface to hashing in OpenSSL */
- #include <openssl/evp.h>
-
-+#define MUNCH_SIZE INT_MAX
-+
-
- #ifndef HASH_OBJ_CONSTRUCTOR
- #define HASH_OBJ_CONSTRUCTOR 0
-@@ -164,9 +166,18 @@
- if (!PyArg_ParseTuple(args, "s#:update", &cp, &len))
- return NULL;
-
-+ if (len > 0 && len <= MUNCH_SIZE) {
- EVP_DigestUpdate(&self->ctx, cp, Py_SAFE_DOWNCAST(len, Py_ssize_t,
- unsigned int));
--
-+ } else {
-+ Py_ssize_t offset = 0;
-+ while (len) {
-+ unsigned int process = len > MUNCH_SIZE ? MUNCH_SIZE : len;
-+ EVP_DigestUpdate(&self->ctx, cp + offset, process);
-+ len -= process;
-+ offset += process;
-+ }
-+ }
- Py_INCREF(Py_None);
- return Py_None;
- }
-@@ -255,9 +266,20 @@
- self->name = name_obj;
- Py_INCREF(self->name);
-
-- if (cp && len)
-+ if (cp && len) {
-+ if (len > 0 && len <= MUNCH_SIZE) {
- EVP_DigestUpdate(&self->ctx, cp, Py_SAFE_DOWNCAST(len, Py_ssize_t,
- unsigned int));
-+ } else {
-+ Py_ssize_t offset = 0;
-+ while (len) {
-+ unsigned int process = len > MUNCH_SIZE ? MUNCH_SIZE : len;
-+ EVP_DigestUpdate(&self->ctx, cp + offset, process);
-+ len -= process;
-+ offset += process;
-+ }
-+ }
-+ }
-
- return 0;
- }
-@@ -328,7 +350,7 @@
- static PyObject *
- EVPnew(PyObject *name_obj,
- const EVP_MD *digest, const EVP_MD_CTX *initial_ctx,
-- const unsigned char *cp, unsigned int len)
-+ const unsigned char *cp, Py_ssize_t len)
- {
- EVPobject *self;
-
-@@ -346,8 +368,20 @@
- EVP_DigestInit(&self->ctx, digest);
- }
-
-- if (cp && len)
-- EVP_DigestUpdate(&self->ctx, cp, len);
-+ if (cp && len) {
-+ if (len > 0 && len <= MUNCH_SIZE) {
-+ EVP_DigestUpdate(&self->ctx, cp, Py_SAFE_DOWNCAST(len, Py_ssize_t,
-+ unsigned int));
-+ } else {
-+ Py_ssize_t offset = 0;
-+ while (len) {
-+ unsigned int process = len > MUNCH_SIZE ? MUNCH_SIZE : len;
-+ EVP_DigestUpdate(&self->ctx, cp + offset, process);
-+ len -= process;
-+ offset += process;
-+ }
-+ }
-+ }
-
- return (PyObject *)self;
- }
-@@ -384,8 +418,7 @@
-
- digest = EVP_get_digestbyname(name);
-
-- return EVPnew(name_obj, digest, NULL, cp, Py_SAFE_DOWNCAST(len, Py_ssize_t,
-- unsigned int));
-+ return EVPnew(name_obj, digest, NULL, cp, len);
- }
-
- /*
-@@ -410,7 +443,7 @@
- CONST_ ## NAME ## _name_obj, \
- NULL, \
- CONST_new_ ## NAME ## _ctx_p, \
-- cp, Py_SAFE_DOWNCAST(len, Py_ssize_t, unsigned int)); \
-+ cp, len); \
- }
-
- /* a PyMethodDef structure for the constructor */
diff --git a/lang/python25/patches/patch-ea b/lang/python25/patches/patch-ea
deleted file mode 100644
index c0b391fc066..00000000000
--- a/lang/python25/patches/patch-ea
+++ /dev/null
@@ -1,59 +0,0 @@
-$NetBSD: patch-ea,v 1.1 2008/08/30 10:02:33 tron Exp $
-
-Patch for CVE-2008-3144 taken from Gentoo.
-
---- Python/mysnprintf.c.orig 2001-12-21 16:32:15.000000000 +0000
-+++ Python/mysnprintf.c 2008-08-30 10:46:31.000000000 +0100
-@@ -54,18 +54,28 @@
- PyOS_vsnprintf(char *str, size_t size, const char *format, va_list va)
- {
- int len; /* # bytes written, excluding \0 */
--#ifndef HAVE_SNPRINTF
-+#ifdef HAVE_SNPRINTF
-+#define _PyOS_vsnprintf_EXTRA_SPACE 1
-+#else
-+#define _PyOS_vsnprintf_EXTRA_SPACE 512
- char *buffer;
- #endif
- assert(str != NULL);
- assert(size > 0);
- assert(format != NULL);
-+ /* We take a size_t as input but return an int. Sanity check
-+ * our input so that it won't cause an overflow in the
-+ * vsnprintf return value or the buffer malloc size. */
-+ if (size > INT_MAX - _PyOS_vsnprintf_EXTRA_SPACE) {
-+ len = -666;
-+ goto Done;
-+ }
-
- #ifdef HAVE_SNPRINTF
- len = vsnprintf(str, size, format, va);
- #else
- /* Emulate it. */
-- buffer = PyMem_MALLOC(size + 512);
-+ buffer = PyMem_MALLOC(size + _PyOS_vsnprintf_EXTRA_SPACE);
- if (buffer == NULL) {
- len = -666;
- goto Done;
-@@ -75,7 +85,7 @@
- if (len < 0)
- /* ignore the error */;
-
-- else if ((size_t)len >= size + 512)
-+ else if ((size_t)len >= size + _PyOS_vsnprintf_EXTRA_SPACE)
- Py_FatalError("Buffer overflow in PyOS_snprintf/PyOS_vsnprintf");
-
- else {
-@@ -86,8 +96,10 @@
- str[to_copy] = '\0';
- }
- PyMem_FREE(buffer);
--Done:
- #endif
-- str[size-1] = '\0';
-+Done:
-+ if (size > 0)
-+ str[size-1] = '\0';
- return len;
-+#undef _PyOS_vsnprintf_EXTRA_SPACE
- }