Mon Mar 21 16:34:28 2011 UTC ()
Apply changes by r308525 from PHP's repository to fix bug #54055
(buffer overrun with high values for precision ini setting).

It fixes one of security fixes by PHP 5.3.6.

Bump PKGREVISION.


(taca)
diff -r1.83 -r1.84 pkgsrc/lang/php5/Makefile
diff -r1.88 -r1.89 pkgsrc/lang/php5/distinfo
diff -r0 -r1.1 pkgsrc/lang/php5/patches/patch-main_snprintf.c
diff -r0 -r1.1 pkgsrc/lang/php5/patches/patch-main_snprintf.h
diff -r0 -r1.1 pkgsrc/lang/php5/patches/patch-main_spprintf.c

cvs diff -r1.83 -r1.84 pkgsrc/lang/php5/Attic/Makefile (expand / switch to unified diff)

--- pkgsrc/lang/php5/Attic/Makefile 2011/02/21 16:25:33 1.83
+++ pkgsrc/lang/php5/Attic/Makefile 2011/03/21 16:34:28 1.84
@@ -1,17 +1,17 @@ @@ -1,17 +1,17 @@
1# $NetBSD: Makefile,v 1.83 2011/02/21 16:25:33 taca Exp $ 1# $NetBSD: Makefile,v 1.84 2011/03/21 16:34:28 taca Exp $
2 2
3PKGNAME= php-${PHP_BASE_VERS} 3PKGNAME= php-${PHP_BASE_VERS}
4PKGREVISION= 2 4PKGREVISION= 3
5CATEGORIES= lang 5CATEGORIES= lang
6HOMEPAGE= http://www.php.net/ 6HOMEPAGE= http://www.php.net/
7COMMENT= PHP Hypertext Preprocessor version 5 7COMMENT= PHP Hypertext Preprocessor version 5
8 8
9TEST_TARGET= test 9TEST_TARGET= test
10PKG_DESTDIR_SUPPORT= user-destdir 10PKG_DESTDIR_SUPPORT= user-destdir
11 11
12USE_TOOLS+= gmake lex pkg-config 12USE_TOOLS+= gmake lex pkg-config
13LIBTOOL_OVERRIDE= # empty 13LIBTOOL_OVERRIDE= # empty
14 14
15PKG_OPTIONS_REQUIRED_GROUPS+= sapi 15PKG_OPTIONS_REQUIRED_GROUPS+= sapi
16PKG_OPTIONS_GROUP.sapi= cgi fastcgi 16PKG_OPTIONS_GROUP.sapi= cgi fastcgi
17PKG_SUGGESTED_OPTIONS+= cgi 17PKG_SUGGESTED_OPTIONS+= cgi

cvs diff -r1.88 -r1.89 pkgsrc/lang/php5/Attic/distinfo (expand / switch to unified diff)

--- pkgsrc/lang/php5/Attic/distinfo 2011/03/21 16:08:29 1.88
+++ pkgsrc/lang/php5/Attic/distinfo 2011/03/21 16:34:28 1.89
@@ -1,20 +1,23 @@ @@ -1,20 +1,23 @@
1$NetBSD: distinfo,v 1.88 2011/03/21 16:08:29 taca Exp $ 1$NetBSD: distinfo,v 1.89 2011/03/21 16:34:28 taca Exp $
2 2
3SHA1 (php-5.2.17/php-5.2.17.tar.bz2) = d68f3b09f766990d815a3c4c63c157db8dab8095 3SHA1 (php-5.2.17/php-5.2.17.tar.bz2) = d68f3b09f766990d815a3c4c63c157db8dab8095
4RMD160 (php-5.2.17/php-5.2.17.tar.bz2) = 567fa8d718b93fb83a89494c83a8bec224ac99e9 4RMD160 (php-5.2.17/php-5.2.17.tar.bz2) = 567fa8d718b93fb83a89494c83a8bec224ac99e9
5Size (php-5.2.17/php-5.2.17.tar.bz2) = 9092312 bytes 5Size (php-5.2.17/php-5.2.17.tar.bz2) = 9092312 bytes
6SHA1 (patch-aa) = 20bc3831e435182d014b11ae9f1f6c537a21af20 6SHA1 (patch-aa) = 20bc3831e435182d014b11ae9f1f6c537a21af20
7SHA1 (patch-af) = 68c5a31dccf1854ba1aff653e4c524767d6a64f6 7SHA1 (patch-af) = 68c5a31dccf1854ba1aff653e4c524767d6a64f6
8SHA1 (patch-ag) = 5e3e822657925a77fbccaca63f283863a1cc6d94 8SHA1 (patch-ag) = 5e3e822657925a77fbccaca63f283863a1cc6d94
9SHA1 (patch-ah) = a25cb7fa3d1f5b9fb99493a4348fdba69d3d4728 9SHA1 (patch-ah) = a25cb7fa3d1f5b9fb99493a4348fdba69d3d4728
10SHA1 (patch-aj) = 54812097499c81e5cb0196ab949cc86a4f24a9cc 10SHA1 (patch-aj) = 54812097499c81e5cb0196ab949cc86a4f24a9cc
11SHA1 (patch-al) = 257129124d46a84f7342b1a00f0cab073066e7cb 11SHA1 (patch-al) = 257129124d46a84f7342b1a00f0cab073066e7cb
12SHA1 (patch-an) = 8f4174627b8cb5f8bfbc59413c95f71e26b9e602 12SHA1 (patch-an) = 8f4174627b8cb5f8bfbc59413c95f71e26b9e602
13SHA1 (patch-ap) = 5eb0e0e4244a993da93e36f8fcb5553454207fce 13SHA1 (patch-ap) = 5eb0e0e4244a993da93e36f8fcb5553454207fce
14SHA1 (patch-aq) = 0c9d48547da2fa80aa8357d23ad8505d1c0330df 14SHA1 (patch-aq) = 0c9d48547da2fa80aa8357d23ad8505d1c0330df
15SHA1 (patch-ar) = 2d74ec926cc00bfbb67d16210af78c33ad9ac38d 15SHA1 (patch-ar) = 2d74ec926cc00bfbb67d16210af78c33ad9ac38d
16SHA1 (patch-as) = f7ce5caffe2acdd1f8e9fc8ae6c7ba1d8c6a25c1 16SHA1 (patch-as) = f7ce5caffe2acdd1f8e9fc8ae6c7ba1d8c6a25c1
17SHA1 (patch-ext_exif_exif.c) = 0a6ab268751e633510cb6b334b1bdb84a014b528 17SHA1 (patch-ext_exif_exif.c) = 0a6ab268751e633510cb6b334b1bdb84a014b528
18SHA1 (patch-ext_shmop_shmop.c) = 6e11b87dd71ff26357b14b61df626c40b40a022d 18SHA1 (patch-ext_shmop_shmop.c) = 6e11b87dd71ff26357b14b61df626c40b40a022d
19SHA1 (patch-ext_zip_lib_zip__name__locate.c) = 4030e37ae4f93dbcb1a3a937a5407c2c406a49d6 19SHA1 (patch-ext_zip_lib_zip__name__locate.c) = 4030e37ae4f93dbcb1a3a937a5407c2c406a49d6
20SHA1 (patch-ext_zip_php__zip.c) = 134fa566a689d72d63a2fa0aa5c96c4595619089 20SHA1 (patch-ext_zip_php__zip.c) = 134fa566a689d72d63a2fa0aa5c96c4595619089
 21SHA1 (patch-main_snprintf.c) = cb112df0cadf84aaeee5987169a31460989995a8
 22SHA1 (patch-main_snprintf.h) = 86ae4c1c8ae9183254e9914cb56d3df999f719cf
 23SHA1 (patch-main_spprintf.c) = 0fe0888b612402c41f040c8781df7f1a7ca66275

File Added: pkgsrc/lang/php5/patches/Attic/patch-main_snprintf.c
$NetBSD: patch-main_snprintf.c,v 1.1 2011/03/21 16:34:28 taca Exp $

--- main/snprintf.c.orig	2010-01-03 09:23:27.000000000 +0000
+++ main/snprintf.c
@@ -675,10 +675,6 @@ static int format_converter(register buf
 
 				/*
 				 * Check if a precision was specified
-				 *
-				 * XXX: an unreasonable amount of precision may be specified
-				 * resulting in overflow of num_buf. Currently we
-				 * ignore this possibility.
 				 */
 				if (*fmt == '.') {
 					adjust_precision = YES;
@@ -692,6 +688,10 @@ static int format_converter(register buf
 							precision = 0;
 					} else
 						precision = 0;
+
+					if (precision > FORMAT_CONV_MAX_PRECISION) {
+						precision = FORMAT_CONV_MAX_PRECISION;
+					}
 				} else
 					adjust_precision = NO;
 			} else

File Added: pkgsrc/lang/php5/patches/Attic/patch-main_snprintf.h
$NetBSD: patch-main_snprintf.h,v 1.1 2011/03/21 16:34:28 taca Exp $

--- main/snprintf.h.orig	2010-01-03 09:23:27.000000000 +0000
+++ main/snprintf.h
@@ -12,7 +12,7 @@
    | obtain it through the world-wide-web, please send a note to          |
    | license@php.net so we can mail you a copy immediately.               |
    +----------------------------------------------------------------------+
-   | Author: Stig Sæther Bakken <ssb@php.net>                             |
+   | Author: Stig Sæther Bakken <ssb@php.net>                             |
    |         Marcus Boerger <helly@php.net>                               |
    +----------------------------------------------------------------------+
 */
@@ -148,6 +148,17 @@ extern char * ap_php_conv_10(register wi
 extern char * ap_php_conv_p2(register u_wide_int num, register int nbits,
 		 char format, char *buf_end, register int *len);
 
+/* The maximum precision that's allowed for float conversion. Does not include
+ * decimal separator, exponent, sign, terminator. Currently does not affect
+ * the modes e/f, only g/k/H, as those have a different limit enforced at
+ * another level (see NDIG in php_conv_fp()).
+ * Applies to the formatting functions of both spprintf.c and snprintf.c, which
+ * use equally sized buffers of MAX_BUF_SIZE = 512 to hold the result of the
+ * call to php_gcvt().
+ * This should be reasonably smaller than MAX_BUF_SIZE (I think MAX_BUF_SIZE - 9
+ * should be enough, but let's give some more space) */
+#define FORMAT_CONV_MAX_PRECISION 500
+
 #endif /* SNPRINTF_H */
 
 /*

File Added: pkgsrc/lang/php5/patches/Attic/patch-main_spprintf.c
$NetBSD: patch-main_spprintf.c,v 1.1 2011/03/21 16:34:28 taca Exp $

--- main/spprintf.c.orig	2010-01-03 09:23:27.000000000 +0000
+++ main/spprintf.c
@@ -282,10 +282,6 @@ static void xbuf_format_converter(smart_
 
 				/*
 				 * Check if a precision was specified
-				 *
-				 * XXX: an unreasonable amount of precision may be specified
-				 * resulting in overflow of num_buf. Currently we
-				 * ignore this possibility.
 				 */
 				if (*fmt == '.') {
 					adjust_precision = YES;
@@ -299,6 +295,10 @@ static void xbuf_format_converter(smart_
 							precision = 0;
 					} else
 						precision = 0;
+
+					if (precision > FORMAT_CONV_MAX_PRECISION) {
+						precision = FORMAT_CONV_MAX_PRECISION;
+					}
 				} else
 					adjust_precision = NO;
 			} else