summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-lang/php/files/4.3.11')
-rw-r--r--dev-lang/php/files/4.3.11/CVS/Entries15
-rw-r--r--dev-lang/php/files/4.3.11/CVS/Repository1
-rw-r--r--dev-lang/php/files/4.3.11/CVS/Root1
-rw-r--r--dev-lang/php/files/4.3.11/CVS/Tag1
-rw-r--r--dev-lang/php/files/4.3.11/php4.3.11-apache2sapi.patch170
-rw-r--r--dev-lang/php/files/4.3.11/php4.3.11-apachesapi.patch33
-rw-r--r--dev-lang/php/files/4.3.11/php4.3.11-curl-open_basedir.patch143
-rw-r--r--dev-lang/php/files/4.3.11/php4.3.11-curl_safemode.patch141
-rw-r--r--dev-lang/php/files/4.3.11/php4.3.11-fopen_wrappers.patch46
-rw-r--r--dev-lang/php/files/4.3.11/php4.3.11-gd-safe_mode.patch131
-rw-r--r--dev-lang/php/files/4.3.11/php4.3.11-gd_safe_mode.patch39
-rw-r--r--dev-lang/php/files/4.3.11/php4.3.11-globals_overwrite.patch559
-rw-r--r--dev-lang/php/files/4.3.11/php4.3.11-mbstring-header_inj.patch151
-rw-r--r--dev-lang/php/files/4.3.11/php4.3.11-multilib-search-path.patch1488
-rw-r--r--dev-lang/php/files/4.3.11/php4.3.11-pcre-security.patch20
-rw-r--r--dev-lang/php/files/4.3.11/php4.3.11-phpinfo_xss.patch75
-rw-r--r--dev-lang/php/files/4.3.11/php4.3.11-pspell-ext-segf.patch317
-rw-r--r--dev-lang/php/files/4.3.11/php4.3.11-session_save_path-segf.patch154
18 files changed, 3485 insertions, 0 deletions
diff --git a/dev-lang/php/files/4.3.11/CVS/Entries b/dev-lang/php/files/4.3.11/CVS/Entries
new file mode 100644
index 0000000..58a7e39
--- /dev/null
+++ b/dev-lang/php/files/4.3.11/CVS/Entries
@@ -0,0 +1,15 @@
+/php4.3.11-apache2sapi.patch/1.1/Wed Jan 4 09:24:47 2006/-ko/T1.1
+/php4.3.11-apachesapi.patch/1.1/Wed Jan 4 09:24:47 2006/-ko/T1.1
+/php4.3.11-curl-open_basedir.patch/1.1/Wed Jan 4 09:24:47 2006/-ko/T1.1
+/php4.3.11-curl_safemode.patch/1.1/Thu Nov 3 14:09:24 2005/-ko/T1.1
+/php4.3.11-fopen_wrappers.patch/1.1/Mon Oct 31 14:10:39 2005/-ko/T1.1
+/php4.3.11-gd-safe_mode.patch/1.1/Wed Jan 4 09:24:47 2006/-ko/T1.1
+/php4.3.11-gd_safe_mode.patch/1.1/Mon Oct 31 14:10:39 2005/-ko/T1.1
+/php4.3.11-globals_overwrite.patch/1.1/Thu Nov 3 14:09:24 2005/-ko/T1.1
+/php4.3.11-mbstring-header_inj.patch/1.1/Wed Jan 4 09:24:47 2006/-ko/T1.1
+/php4.3.11-multilib-search-path.patch/1.1/Wed Jan 4 09:24:47 2006/-ko/T1.1
+/php4.3.11-pcre-security.patch/1.1/Mon Oct 31 14:10:39 2005/-ko/T1.1
+/php4.3.11-phpinfo_xss.patch/1.1/Thu Nov 3 14:09:24 2005/-ko/T1.1
+/php4.3.11-pspell-ext-segf.patch/1.1/Mon Oct 31 14:10:39 2005/-ko/T1.1
+/php4.3.11-session_save_path-segf.patch/1.1/Mon Oct 31 14:10:39 2005/-ko/T1.1
+D
diff --git a/dev-lang/php/files/4.3.11/CVS/Repository b/dev-lang/php/files/4.3.11/CVS/Repository
new file mode 100644
index 0000000..19a4434
--- /dev/null
+++ b/dev-lang/php/files/4.3.11/CVS/Repository
@@ -0,0 +1 @@
+gentoo-x86/dev-lang/php/files/4.3.11
diff --git a/dev-lang/php/files/4.3.11/CVS/Root b/dev-lang/php/files/4.3.11/CVS/Root
new file mode 100644
index 0000000..854a2c8
--- /dev/null
+++ b/dev-lang/php/files/4.3.11/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@anoncvs.gentoo.org:/var/cvsroot
diff --git a/dev-lang/php/files/4.3.11/CVS/Tag b/dev-lang/php/files/4.3.11/CVS/Tag
new file mode 100644
index 0000000..5062263
--- /dev/null
+++ b/dev-lang/php/files/4.3.11/CVS/Tag
@@ -0,0 +1 @@
+N1.1
diff --git a/dev-lang/php/files/4.3.11/php4.3.11-apache2sapi.patch b/dev-lang/php/files/4.3.11/php4.3.11-apache2sapi.patch
new file mode 100644
index 0000000..e6b4337
--- /dev/null
+++ b/dev-lang/php/files/4.3.11/php4.3.11-apache2sapi.patch
@@ -0,0 +1,170 @@
+--- sapi/apache2handler/sapi_apache2.c 2005-03-10 12:39:04.000000000 +0100
++++ sapi/apache2handler/sapi_apache2.c 2005-12-03 02:34:22.000000000 +0100
+@@ -18,7 +18,7 @@
+ +----------------------------------------------------------------------+
+ */
+
+-/* $Id: sapi_apache2.c,v 1.1.2.39 2005/03/10 11:39:04 jorton Exp $ */
++/* $Id: sapi_apache2.c,v 1.1.2.40.2.8 2005/11/18 19:03:13 iliaa Exp $ */
+
+ #include <fcntl.h>
+
+@@ -268,23 +268,18 @@
+ TSRMLS_FETCH();
+
+ ctx = SG(server_context);
+-
+- /* We use APLOG_STARTUP because it keeps us from printing the
+- * data and time information at the beginning of the error log
+- * line. Not sure if this is correct, but it mirrors what happens
+- * with Apache 1.3 -- rbb
+- */
++
+ if (ctx == NULL) { /* we haven't initialized our ctx yet, oh well */
+ ap_log_error(APLOG_MARK, APLOG_ERR | APLOG_STARTUP, 0, NULL, "%s", msg);
+ } else {
+- ap_log_rerror(APLOG_MARK, APLOG_ERR | APLOG_STARTUP, 0, ctx->r, "%s", msg);
++ ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, ctx->r, "%s", msg);
+ }
+ }
+
+ static void php_apache_sapi_log_message_ex(char *msg, request_rec *r)
+ {
+ if (r) {
+- ap_log_rerror(APLOG_MARK, APLOG_ERR | APLOG_STARTUP, 0, r, msg, r->filename);
++ ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, msg, r->filename);
+ } else {
+ php_apache_sapi_log_message(msg);
+ }
+@@ -448,6 +443,18 @@
+ php_request_shutdown(NULL);
+ }
+
++static void php_apache_ini_dtor(request_rec *r, request_rec *p TSRMLS_DC)
++{
++ if (strcmp(r->protocol, "INCLUDED")) {
++ zend_try { zend_ini_deactivate(TSRMLS_C); } zend_end_try();
++ }
++ if (p) {
++ ((php_struct *)SG(server_context))->r = p;
++ } else {
++ apr_pool_cleanup_run(r->pool, (void *)&SG(server_context), php_server_context_cleanup);
++ }
++}
++
+ static int php_handler(request_rec *r)
+ {
+ php_struct *ctx;
+@@ -458,15 +465,31 @@
+ request_rec *parent_req = NULL;
+ TSRMLS_FETCH();
+
++#define PHPAP_INI_OFF php_apache_ini_dtor(r, parent_req TSRMLS_CC);
++
+ conf = ap_get_module_config(r->per_dir_config, &php4_module);
++
++ /* apply_config() needs r in some cases, so allocate server_context early */
++ ctx = SG(server_context);
++ if (ctx == NULL) {
++ ctx = SG(server_context) = apr_pcalloc(r->pool, sizeof(*ctx));
++ /* register a cleanup so we clear out the SG(server_context)
++ * after each request. Note: We pass in the pointer to the
++ * server_context in case this is handled by a different thread.
++ */
++ apr_pool_cleanup_register(r->pool, (void *)&SG(server_context), php_server_context_cleanup, apr_pool_cleanup_null);
++ ctx->r = r;
++ ctx = NULL; /* May look weird to null it here, but it is to catch the right case in the first_try later on */
++ } else {
++ parent_req = ctx->r;
++ ctx->r = r;
++ }
+ apply_config(conf);
+
+ if (strcmp(r->handler, PHP_MAGIC_TYPE) && strcmp(r->handler, PHP_SOURCE_MAGIC_TYPE) && strcmp(r->handler, PHP_SCRIPT)) {
+ /* Check for xbithack in this case. */
+ if (!AP2(xbithack) || strcmp(r->handler, "text/html") || !(r->finfo.protection & APR_UEXECUTE)) {
+- zend_try {
+- zend_ini_deactivate(TSRMLS_C);
+- } zend_end_try();
++ PHPAP_INI_OFF;
+ return DECLINED;
+ }
+ }
+@@ -475,32 +498,24 @@
+ * the configuration; default behaviour is to accept. */
+ if (r->used_path_info == AP_REQ_REJECT_PATH_INFO
+ && r->path_info && r->path_info[0]) {
+- zend_try {
+- zend_ini_deactivate(TSRMLS_C);
+- } zend_end_try();
++ PHPAP_INI_OFF;
+ return HTTP_NOT_FOUND;
+ }
+
+ /* handle situations where user turns the engine off */
+ if (!AP2(engine)) {
+- zend_try {
+- zend_ini_deactivate(TSRMLS_C);
+- } zend_end_try();
++ PHPAP_INI_OFF;
+ return DECLINED;
+ }
+
+ if (r->finfo.filetype == 0) {
+ php_apache_sapi_log_message_ex("script '%s' not found or unable to stat", r);
+- zend_try {
+- zend_ini_deactivate(TSRMLS_C);
+- } zend_end_try();
++ PHPAP_INI_OFF;
+ return HTTP_NOT_FOUND;
+ }
+ if (r->finfo.filetype == APR_DIR) {
+ php_apache_sapi_log_message_ex("attempt to invoke directory '%s' as script", r);
+- zend_try {
+- zend_ini_deactivate(TSRMLS_C);
+- } zend_end_try();
++ PHPAP_INI_OFF;
+ return HTTP_FORBIDDEN;
+ }
+
+@@ -516,24 +531,30 @@
+
+ zend_first_try {
+
+- ctx = SG(server_context);
+ if (ctx == NULL) {
+- ctx = SG(server_context) = apr_pcalloc(r->pool, sizeof(*ctx));
+- /* register a cleanup so we clear out the SG(server_context)
+- * after each request. Note: We pass in the pointer to the
+- * server_context in case this is handled by a different thread.
+- */
+- apr_pool_cleanup_register(r->pool, (void *)&SG(server_context), php_server_context_cleanup, apr_pool_cleanup_null);
+-
+- ctx->r = r;
++normal:
+ brigade = apr_brigade_create(r->pool, r->connection->bucket_alloc);
++ ctx = SG(server_context);
+ ctx->brigade = brigade;
+
+ if (php_apache_request_ctor(r, ctx TSRMLS_CC)!=SUCCESS) {
+ zend_bailout();
+ }
+ } else {
+- parent_req = ctx->r;
++ if (!parent_req) {
++ parent_req = ctx->r;
++ }
++ if (parent_req && parent_req->handler && strcmp(parent_req->handler, PHP_MAGIC_TYPE) && strcmp(parent_req->handler, PHP_SOURCE_MAGIC_TYPE) && strcmp(parent_req->handler, PHP_SCRIPT)) {
++ if (php_apache_request_ctor(r, ctx TSRMLS_CC)!=SUCCESS) {
++ zend_bailout();
++ }
++ }
++
++ /* check if comming due to ErrorDocument */
++ if (parent_req && parent_req->status != HTTP_OK) {
++ parent_req = NULL;
++ goto normal;
++ }
+ ctx->r = r;
+ brigade = ctx->brigade;
+ }
diff --git a/dev-lang/php/files/4.3.11/php4.3.11-apachesapi.patch b/dev-lang/php/files/4.3.11/php4.3.11-apachesapi.patch
new file mode 100644
index 0000000..82480c7
--- /dev/null
+++ b/dev-lang/php/files/4.3.11/php4.3.11-apachesapi.patch
@@ -0,0 +1,33 @@
+--- sapi/apache/mod_php4.c 2004-07-21 18:25:28.000000000 +0200
++++ sapi/apache/mod_php4.c 2005-05-19 18:14:46.000000000 +0200
+@@ -17,7 +17,7 @@
+ | PHP 4.0 patches by Zeev Suraski <zeev@zend.com> |
+ +----------------------------------------------------------------------+
+ */
+-/* $Id: mod_php4.c,v 1.146.2.14 2004/07/21 16:25:28 sesser Exp $ */
++/* $Id: mod_php4.c,v 1.146.2.15 2005/05/19 16:14:46 rasmus Exp $ */
+
+ #include "php_apache_http.h"
+ #include "http_conf_globals.h"
+@@ -209,12 +209,18 @@
+ */
+ static int sapi_apache_send_headers(sapi_headers_struct *sapi_headers TSRMLS_DC)
+ {
+- if(SG(server_context) == NULL) { /* server_context is not here anymore */
++ request_rec *r = SG(server_context);
++
++ if(r == NULL) { /* server_context is not here anymore */
+ return SAPI_HEADER_SEND_FAILED;
+ }
+
+- ((request_rec *) SG(server_context))->status = SG(sapi_headers).http_response_code;
+- send_http_header((request_rec *) SG(server_context));
++ r->status = SG(sapi_headers).http_response_code;
++ if(r->status==304) {
++ send_error_response(r,0);
++ } else {
++ send_http_header(r);
++ }
+ return SAPI_HEADER_SENT_SUCCESSFULLY;
+ }
+ /* }}} */
diff --git a/dev-lang/php/files/4.3.11/php4.3.11-curl-open_basedir.patch b/dev-lang/php/files/4.3.11/php4.3.11-curl-open_basedir.patch
new file mode 100644
index 0000000..8817cab
--- /dev/null
+++ b/dev-lang/php/files/4.3.11/php4.3.11-curl-open_basedir.patch
@@ -0,0 +1,143 @@
+--- ext/curl/curl.c 2005-03-14 10:03:09.000000000 +0100
++++ ext/curl/curl.c 2005-12-03 02:34:31.000000000 +0100
+@@ -16,7 +16,7 @@
+ +----------------------------------------------------------------------+
+ */
+
+-/* $Id: curl.c,v 1.124.2.29 2005/03/14 09:03:09 sniper Exp $ */
++/* $Id: curl.c,v 1.124.2.30.2.3 2005/10/17 02:42:51 iliaa Exp $ */
+
+ #ifdef HAVE_CONFIG_H
+ #include "config.h"
+@@ -66,8 +66,8 @@
+ #define CAAZ(s, v) add_assoc_zval_ex(return_value, s, sizeof(s), (zval *) v);
+
+ #define PHP_CURL_CHECK_OPEN_BASEDIR(str, len) \
+- if (PG(open_basedir) && *PG(open_basedir) && \
+- strncasecmp(str, "file://", sizeof("file://") - 1) == 0) \
++ if (((PG(open_basedir) && *PG(open_basedir)) || PG(safe_mode)) && \
++ strncasecmp(str, "file:", sizeof("file:") - 1) == 0) \
+ { \
+ php_url *tmp_url; \
+ \
+@@ -76,7 +76,7 @@
+ RETURN_FALSE; \
+ } \
+ \
+- if (php_check_open_basedir(tmp_url->path TSRMLS_CC) || \
++ if (tmp_url->query || tmp_url->fragment || php_check_open_basedir(tmp_url->path TSRMLS_CC) || \
+ (PG(safe_mode) && !php_checkuid(tmp_url->path, "rb+", CHECKUID_CHECK_MODE_PARAM)) \
+ ) { \
+ php_url_free(tmp_url); \
+@@ -436,10 +436,12 @@
+ zend_list_addref(ch->id);
+ ZVAL_STRINGL(argv[1], data, length, 1);
+
++ ch->in_callback = 1;
+ error = call_user_function(EG(function_table),
+ NULL,
+ t->func,
+ retval, 2, argv TSRMLS_CC);
++ ch->in_callback = 0;
+ if (error == FAILURE) {
+ php_error(E_WARNING, "%s(): Couldn't call the CURLOPT_WRITEFUNCTION",
+ get_active_function_name(TSRMLS_C));
+@@ -495,10 +497,12 @@
+ zend_list_addref(t->fd);
+ ZVAL_LONG(argv[2], (int) size * nmemb);
+
++ ch->in_callback = 1;
+ error = call_user_function(EG(function_table),
+ NULL,
+ t->func,
+ retval, 3, argv TSRMLS_CC);
++ ch->in_callback = 0;
+ if (error == FAILURE) {
+ php_error(E_WARNING, "%s(): Cannot call the CURLOPT_READFUNCTION",
+ get_active_function_name(TSRMLS_C));
+@@ -553,10 +557,12 @@
+ zend_list_addref(ch->id);
+ ZVAL_STRINGL(argv[1], data, length, 1);
+
++ ch->in_callback = 1;
+ error = call_user_function(EG(function_table),
+ NULL,
+ t->func,
+ retval, 2, argv TSRMLS_CC);
++ ch->in_callback = 0;
+ if (error == FAILURE) {
+ php_error(E_WARNING, "%s(): Couldn't call the CURLOPT_HEADERFUNCTION",
+ get_active_function_name(TSRMLS_C));
+@@ -606,10 +612,12 @@
+ ZVAL_STRING(argv[1], prompt, 1);
+ ZVAL_LONG(argv[2], buflen);
+
++ ch->in_callback = 1;
+ error = call_user_function(EG(function_table),
+ NULL,
+ func,
+ retval, 2, argv TSRMLS_CC);
++ ch->in_callback = 0;
+ if (error == FAILURE) {
+ php_error(E_WARNING, "%s(): Couldn't call the CURLOPT_PASSWDFUNCTION", get_active_function_name(TSRMLS_C));
+ } else if (Z_TYPE_P(retval) == IS_STRING) {
+@@ -680,7 +688,9 @@
+ (*ch)->handlers->write_header = ecalloc(1, sizeof(php_curl_write));
+ (*ch)->handlers->read = ecalloc(1, sizeof(php_curl_read));
+ memset(&(*ch)->err, 0, sizeof((*ch)->err));
+-
++
++ (*ch)->in_callback = 0;
++
+ zend_llist_init(&(*ch)->to_free.str, sizeof(char *),
+ (void(*)(void *)) curl_free_string, 0);
+ zend_llist_init(&(*ch)->to_free.slist, sizeof(struct curl_slist),
+@@ -982,10 +992,15 @@
+
+ postval = Z_STRVAL_PP(current);
+ if (*postval == '@') {
++ ++postval;
++ /* safe_mode / open_basedir check */
++ if (php_check_open_basedir(postval TSRMLS_CC) || (PG(safe_mode) && !php_checkuid(postval, "rb+", CHECKUID_CHECK_MODE_PARAM))) {
++ RETURN_FALSE;
++ }
+ error = curl_formadd(&first, &last,
+ CURLFORM_COPYNAME, string_key,
+ CURLFORM_NAMELENGTH, (long)string_key_len - 1,
+- CURLFORM_FILE, ++postval,
++ CURLFORM_FILE, postval,
+ CURLFORM_END);
+ }
+ else {
+@@ -1337,7 +1352,11 @@
+ WRONG_PARAM_COUNT;
+ }
+ ZEND_FETCH_RESOURCE(ch, php_curl *, zid, -1, le_curl_name, le_curl);
+-
++
++ if (ch->in_callback) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Attempt to close CURL handle from a callback");
++ return;
++ }
+ zend_list_delete(Z_LVAL_PP(zid));
+ }
+ /* }}} */
+--- ext/curl/php_curl.h 2002-12-31 17:34:15.000000000 +0100
++++ ext/curl/php_curl.h 2005-06-02 23:05:06.000000000 +0200
+@@ -17,7 +17,7 @@
+ +----------------------------------------------------------------------+
+ */
+
+-/* $Id: php_curl.h,v 1.29.2.1 2002/12/31 16:34:15 sebastian Exp $ */
++/* $Id: php_curl.h,v 1.29.2.2 2005/06/02 21:05:06 tony2001 Exp $ */
+
+ #ifndef _PHP_CURL_H
+ #define _PHP_CURL_H
+@@ -93,6 +93,7 @@
+ struct _php_curl_free to_free;
+ long id;
+ unsigned int uses;
++ zend_bool in_callback;
+ } php_curl;
+
+ /* streams support */
diff --git a/dev-lang/php/files/4.3.11/php4.3.11-curl_safemode.patch b/dev-lang/php/files/4.3.11/php4.3.11-curl_safemode.patch
new file mode 100644
index 0000000..f308dea
--- /dev/null
+++ b/dev-lang/php/files/4.3.11/php4.3.11-curl_safemode.patch
@@ -0,0 +1,141 @@
+--- ext/curl/curl.c 2005-03-14 10:03:09.000000000 +0100
++++ ext/curl/curl.c 2005-10-17 04:42:51.000000000 +0200
+@@ -16,7 +16,7 @@
+ +----------------------------------------------------------------------+
+ */
+
+-/* $Id: curl.c,v 1.124.2.29 2005/03/14 09:03:09 sniper Exp $ */
++/* $Id: curl.c,v 1.124.2.30.2.3 2005/10/17 02:42:51 iliaa Exp $ */
+
+ #ifdef HAVE_CONFIG_H
+ #include "config.h"
+@@ -66,7 +66,7 @@
+ #define CAAZ(s, v) add_assoc_zval_ex(return_value, s, sizeof(s), (zval *) v);
+
+ #define PHP_CURL_CHECK_OPEN_BASEDIR(str, len) \
+- if (PG(open_basedir) && *PG(open_basedir) && \
++ if (((PG(open_basedir) && *PG(open_basedir)) || PG(safe_mode)) && \
+ strncasecmp(str, "file://", sizeof("file://") - 1) == 0) \
+ { \
+ php_url *tmp_url; \
+@@ -76,7 +76,7 @@
+ RETURN_FALSE; \
+ } \
+ \
+- if (php_check_open_basedir(tmp_url->path TSRMLS_CC) || \
++ if (tmp_url->query || php_check_open_basedir(tmp_url->path TSRMLS_CC) || \
+ (PG(safe_mode) && !php_checkuid(tmp_url->path, "rb+", CHECKUID_CHECK_MODE_PARAM)) \
+ ) { \
+ php_url_free(tmp_url); \
+@@ -436,10 +436,12 @@
+ zend_list_addref(ch->id);
+ ZVAL_STRINGL(argv[1], data, length, 1);
+
++ ch->in_callback = 1;
+ error = call_user_function(EG(function_table),
+ NULL,
+ t->func,
+ retval, 2, argv TSRMLS_CC);
++ ch->in_callback = 0;
+ if (error == FAILURE) {
+ php_error(E_WARNING, "%s(): Couldn't call the CURLOPT_WRITEFUNCTION",
+ get_active_function_name(TSRMLS_C));
+@@ -495,10 +497,12 @@
+ zend_list_addref(t->fd);
+ ZVAL_LONG(argv[2], (int) size * nmemb);
+
++ ch->in_callback = 1;
+ error = call_user_function(EG(function_table),
+ NULL,
+ t->func,
+ retval, 3, argv TSRMLS_CC);
++ ch->in_callback = 0;
+ if (error == FAILURE) {
+ php_error(E_WARNING, "%s(): Cannot call the CURLOPT_READFUNCTION",
+ get_active_function_name(TSRMLS_C));
+@@ -553,10 +557,12 @@
+ zend_list_addref(ch->id);
+ ZVAL_STRINGL(argv[1], data, length, 1);
+
++ ch->in_callback = 1;
+ error = call_user_function(EG(function_table),
+ NULL,
+ t->func,
+ retval, 2, argv TSRMLS_CC);
++ ch->in_callback = 0;
+ if (error == FAILURE) {
+ php_error(E_WARNING, "%s(): Couldn't call the CURLOPT_HEADERFUNCTION",
+ get_active_function_name(TSRMLS_C));
+@@ -606,10 +612,12 @@
+ ZVAL_STRING(argv[1], prompt, 1);
+ ZVAL_LONG(argv[2], buflen);
+
++ ch->in_callback = 1;
+ error = call_user_function(EG(function_table),
+ NULL,
+ func,
+ retval, 2, argv TSRMLS_CC);
++ ch->in_callback = 0;
+ if (error == FAILURE) {
+ php_error(E_WARNING, "%s(): Couldn't call the CURLOPT_PASSWDFUNCTION", get_active_function_name(TSRMLS_C));
+ } else if (Z_TYPE_P(retval) == IS_STRING) {
+@@ -680,7 +688,9 @@
+ (*ch)->handlers->write_header = ecalloc(1, sizeof(php_curl_write));
+ (*ch)->handlers->read = ecalloc(1, sizeof(php_curl_read));
+ memset(&(*ch)->err, 0, sizeof((*ch)->err));
+-
++
++ (*ch)->in_callback = 0;
++
+ zend_llist_init(&(*ch)->to_free.str, sizeof(char *),
+ (void(*)(void *)) curl_free_string, 0);
+ zend_llist_init(&(*ch)->to_free.slist, sizeof(struct curl_slist),
+@@ -982,10 +992,15 @@
+
+ postval = Z_STRVAL_PP(current);
+ if (*postval == '@') {
++ ++postval;
++ /* safe_mode / open_basedir check */
++ if (php_check_open_basedir(postval TSRMLS_CC) || (PG(safe_mode) && !php_checkuid(postval, "rb+", CHECKUID_CHECK_MODE_PARAM))) {
++ RETURN_FALSE;
++ }
+ error = curl_formadd(&first, &last,
+ CURLFORM_COPYNAME, string_key,
+ CURLFORM_NAMELENGTH, (long)string_key_len - 1,
+- CURLFORM_FILE, ++postval,
++ CURLFORM_FILE, postval,
+ CURLFORM_END);
+ }
+ else {
+@@ -1337,7 +1352,11 @@
+ WRONG_PARAM_COUNT;
+ }
+ ZEND_FETCH_RESOURCE(ch, php_curl *, zid, -1, le_curl_name, le_curl);
+-
++
++ if (ch->in_callback) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Attempt to close CURL handle from a callback");
++ return;
++ }
+ zend_list_delete(Z_LVAL_PP(zid));
+ }
+ /* }}} */
+--- ext/curl/php_curl.h 2002-12-31 17:34:15.000000000 +0100
++++ ext/curl/php_curl.h 2005-06-02 23:05:06.000000000 +0200
+@@ -17,7 +17,7 @@
+ +----------------------------------------------------------------------+
+ */
+
+-/* $Id: php_curl.h,v 1.29.2.1 2002/12/31 16:34:15 sebastian Exp $ */
++/* $Id: php_curl.h,v 1.29.2.2 2005/06/02 21:05:06 tony2001 Exp $ */
+
+ #ifndef _PHP_CURL_H
+ #define _PHP_CURL_H
+@@ -93,6 +93,7 @@
+ struct _php_curl_free to_free;
+ long id;
+ unsigned int uses;
++ zend_bool in_callback;
+ } php_curl;
+
+ /* streams support */
diff --git a/dev-lang/php/files/4.3.11/php4.3.11-fopen_wrappers.patch b/dev-lang/php/files/4.3.11/php4.3.11-fopen_wrappers.patch
new file mode 100644
index 0000000..672da5e
--- /dev/null
+++ b/dev-lang/php/files/4.3.11/php4.3.11-fopen_wrappers.patch
@@ -0,0 +1,46 @@
+--- main/fopen_wrappers.c 2005/02/02 23:44:07 1.153.2.10
++++ main/fopen_wrappers.c 2005/09/27 15:08:43 1.153.2.10.2.2
+@@ -16,7 +16,7 @@
+ | Jim Winstead <jimw@php.net> |
+ +----------------------------------------------------------------------+
+ */
+-/* $Id: fopen_wrappers.c,v 1.153.2.10 2005/02/02 23:44:07 iliaa Exp $ */
++/* $Id: fopen_wrappers.c,v 1.153.2.10.2.2 2005/09/27 15:08:43 iliaa Exp $ */
+
+ /* {{{ includes
+ */
+@@ -36,14 +36,6 @@
+ #include <winsock.h>
+ #define O_RDONLY _O_RDONLY
+ #include "win32/param.h"
+-#elif defined(NETWARE)
+-/*#include <ws2nlm.h>*/
+-/*#include <sys/socket.h>*/
+-#ifdef NEW_LIBC
+-#include <sys/param.h>
+-#else
+-#include "netware/param.h"
+-#endif
+ #else
+ #include <sys/param.h>
+ #endif
+@@ -57,8 +49,6 @@
+ #if HAVE_PWD_H
+ #ifdef PHP_WIN32
+ #include "win32/pwd.h"
+-#elif defined(NETWARE)
+-#include "netware/pwd.h"
+ #else
+ #include <pwd.h>
+ #endif
+@@ -120,8 +110,8 @@ PHPAPI int php_check_specific_open_based
+ /* Handler for basedirs that end with a / */
+ resolved_basedir_len = strlen(resolved_basedir);
+ if (basedir[strlen(basedir) - 1] == PHP_DIR_SEPARATOR) {
+- if (resolved_basedir[resolved_basedir_len - 1] == '/') {
+- resolved_basedir[resolved_basedir_len - 1] = PHP_DIR_SEPARATOR;
++ if (resolved_basedir[resolved_basedir_len - 1] != PHP_DIR_SEPARATOR) {
++ resolved_basedir[resolved_basedir_len] = PHP_DIR_SEPARATOR;
+ resolved_basedir[++resolved_basedir_len] = '\0';
+ }
+ }
diff --git a/dev-lang/php/files/4.3.11/php4.3.11-gd-safe_mode.patch b/dev-lang/php/files/4.3.11/php4.3.11-gd-safe_mode.patch
new file mode 100644
index 0000000..15f2f95
--- /dev/null
+++ b/dev-lang/php/files/4.3.11/php4.3.11-gd-safe_mode.patch
@@ -0,0 +1,131 @@
+--- ext/gd/gd.c 2005-01-17 18:07:57.000000000 +0100
++++ ext/gd/gd.c 2005-12-03 02:34:41.000000000 +0100
+@@ -18,7 +18,7 @@
+ +----------------------------------------------------------------------+
+ */
+
+-/* $Id: gd.c,v 1.221.2.54 2005/01/17 17:07:57 sniper Exp $ */
++/* $Id: gd.c,v 1.221.2.56.2.3 2005/11/03 20:20:04 sniper Exp $ */
+
+ /* gd 1.2 is copyright 1994, 1995, Quest Protein Database Center,
+ Cold Spring Harbor Labs. */
+@@ -623,7 +623,7 @@
+
+ convert_to_string_ex(file);
+
+- stream = php_stream_open_wrapper(Z_STRVAL_PP(file), "rb", IGNORE_PATH | IGNORE_URL_WIN | REPORT_ERRORS, NULL);
++ stream = php_stream_open_wrapper(Z_STRVAL_PP(file), "rb", ENFORCE_SAFE_MODE | IGNORE_PATH | IGNORE_URL_WIN | REPORT_ERRORS, NULL);
+ if (stream == NULL) {
+ RETURN_FALSE;
+ }
+@@ -807,6 +807,10 @@
+ convert_to_boolean_ex(dither);
+ convert_to_long_ex(ncolors);
+
++ if (Z_LVAL_PP(ncolors) <= 0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Number of colors has to be greater than zero");
++ RETURN_FALSE;
++ }
+ gdImageTrueColorToPalette(im, Z_LVAL_PP(dither), Z_LVAL_PP(ncolors));
+
+ RETURN_TRUE;
+@@ -1436,7 +1440,7 @@
+
+ fn = Z_STRVAL_PP(file);
+
+- stream = php_stream_open_wrapper(fn, "rb", REPORT_ERRORS|IGNORE_PATH|IGNORE_URL_WIN, NULL);
++ stream = php_stream_open_wrapper(fn, "rb", ENFORCE_SAFE_MODE|REPORT_ERRORS|IGNORE_PATH|IGNORE_URL_WIN, NULL);
+ if (stream == NULL) {
+ RETURN_FALSE;
+ }
+@@ -1644,10 +1648,7 @@
+ }
+
+ if ((argc == 2) || (argc > 2 && Z_STRLEN_PP(file))) {
+- if (!fn || fn == empty_string || php_check_open_basedir(fn TSRMLS_CC)) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid filename '%s'", fn);
+- RETURN_FALSE;
+- }
++ PHP_GD_CHECK_OPEN_BASEDIR(fn, "Invalid filename");
+
+ fp = VCWD_FOPEN(fn, "wb");
+ if (!fp) {
+@@ -1699,7 +1700,7 @@
+ char buf[4096];
+ char *path;
+
+- tmp = php_open_temporary_file("", "", &path TSRMLS_CC);
++ tmp = php_open_temporary_file(NULL, NULL, &path TSRMLS_CC);
+ if (tmp == NULL) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to open temporary file");
+ RETURN_FALSE;
+@@ -3017,7 +3018,8 @@
+ {
+ zval *IM, *EXT = NULL;
+ gdImagePtr im=NULL;
+- int col = -1, x = -1, y = -1, str_len, fontname_len, i, brect[8];
++ long col = -1, x = -1, y = -1;
++ int str_len, fontname_len, i, brect[8];
+ double ptsize, angle;
+ unsigned char *str = NULL, *fontname = NULL;
+ char *error = NULL;
+@@ -3741,16 +3743,10 @@
+ }
+
+ /* Check origin file */
+- if (!fn_org || fn_org == empty_string || php_check_open_basedir(fn_org TSRMLS_CC)) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid origin filename '%s'", fn_org);
+- RETURN_FALSE;
+- }
++ PHP_GD_CHECK_OPEN_BASEDIR(fn_org, "Invalid origin filename");
+
+ /* Check destination file */
+- if (!fn_dest || fn_dest == empty_string || php_check_open_basedir(fn_dest TSRMLS_CC)) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid destination filename '%s'", fn_dest);
+- RETURN_FALSE;
+- }
++ PHP_GD_CHECK_OPEN_BASEDIR(fn_dest, "Invalid destination filename");
+
+ /* Open origin file */
+ org = VCWD_FOPEN(fn_org, "rb");
+--- ext/gd/gd_ctx.c 2004-01-28 17:27:42.000000000 +0100
++++ ext/gd/gd_ctx.c 2005-12-03 02:34:41.000000000 +0100
+@@ -73,10 +73,7 @@
+ }
+
+ if ((argc == 2) || (argc > 2 && Z_STRLEN_PP(file))) {
+- if (!fn || fn == empty_string || php_check_open_basedir(fn TSRMLS_CC)) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid filename '%s'", fn);
+- RETURN_FALSE;
+- }
++ PHP_GD_CHECK_OPEN_BASEDIR(fn, "Invalid filename");
+
+ fp = VCWD_FOPEN(fn, "wb");
+ if (!fp) {
+--- ext/gd/php_gd.h 2003-03-31 10:49:30.000000000 +0200
++++ ext/gd/php_gd.h 2005-12-03 02:34:41.000000000 +0100
+@@ -17,7 +17,7 @@
+ +----------------------------------------------------------------------+
+ */
+
+-/* $Id: php_gd.h,v 1.44.2.5 2003/03/31 08:49:30 sniper Exp $ */
++/* $Id: php_gd.h,v 1.44.2.5.8.2 2005/11/15 08:15:36 sniper Exp $ */
+
+ #ifndef PHP_GD_H
+ #define PHP_GD_H
+@@ -30,6 +30,15 @@
+
+ #if HAVE_LIBGD
+
++/* open_basedir and safe_mode checks */
++#define PHP_GD_CHECK_OPEN_BASEDIR(filename, errormsg) \
++ if (!filename || filename == empty_string || php_check_open_basedir(filename TSRMLS_CC) || \
++ (PG(safe_mode) && !php_checkuid(filename, NULL, CHECKUID_CHECK_FILE_AND_DIR)) \
++ ) { \
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, errormsg); \
++ RETURN_FALSE; \
++ }
++
+ #define PHP_GDIMG_TYPE_GIF 1
+ #define PHP_GDIMG_TYPE_PNG 2
+ #define PHP_GDIMG_TYPE_JPG 3
diff --git a/dev-lang/php/files/4.3.11/php4.3.11-gd_safe_mode.patch b/dev-lang/php/files/4.3.11/php4.3.11-gd_safe_mode.patch
new file mode 100644
index 0000000..1901112
--- /dev/null
+++ b/dev-lang/php/files/4.3.11/php4.3.11-gd_safe_mode.patch
@@ -0,0 +1,39 @@
+--- ext/gd/gd.c 2005/01/17 17:07:57 1.221.2.54
++++ ext/gd/gd.c 2005/10/06 20:44:52 1.221.2.56.2.1
+@@ -18,7 +18,7 @@
+ +----------------------------------------------------------------------+
+ */
+
+-/* $Id: gd.c,v 1.221.2.54 2005/01/17 17:07:57 sniper Exp $ */
++/* $Id: gd.c,v 1.221.2.56.2.1 2005/10/06 20:44:52 iliaa Exp $ */
+
+ /* gd 1.2 is copyright 1994, 1995, Quest Protein Database Center,
+ Cold Spring Harbor Labs. */
+@@ -1644,7 +1644,7 @@ static void _php_image_output(INTERNAL_F
+ }
+
+ if ((argc == 2) || (argc > 2 && Z_STRLEN_PP(file))) {
+- if (!fn || fn == empty_string || php_check_open_basedir(fn TSRMLS_CC)) {
++ if (!fn || fn == empty_string || php_check_open_basedir(fn TSRMLS_CC) || (PG(safe_mode) && !php_checkuid(fn, "rb+", CHECKUID_CHECK_FILE_AND_DIR))) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid filename '%s'", fn);
+ RETURN_FALSE;
+ }
+@@ -1699,7 +1699,7 @@ static void _php_image_output(INTERNAL_F
+ char buf[4096];
+ char *path;
+
+- tmp = php_open_temporary_file("", "", &path TSRMLS_CC);
++ tmp = php_open_temporary_file(NULL, NULL, &path TSRMLS_CC);
+ if (tmp == NULL) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to open temporary file");
+ RETURN_FALSE;
+@@ -3017,7 +3017,8 @@ static void php_imagettftext_common(INTE
+ {
+ zval *IM, *EXT = NULL;
+ gdImagePtr im=NULL;
+- int col = -1, x = -1, y = -1, str_len, fontname_len, i, brect[8];
++ long col = -1, x = -1, y = -1;
++ int str_len, fontname_len, i, brect[8];
+ double ptsize, angle;
+ unsigned char *str = NULL, *fontname = NULL;
+ char *error = NULL;
diff --git a/dev-lang/php/files/4.3.11/php4.3.11-globals_overwrite.patch b/dev-lang/php/files/4.3.11/php4.3.11-globals_overwrite.patch
new file mode 100644
index 0000000..d3eb55c
--- /dev/null
+++ b/dev-lang/php/files/4.3.11/php4.3.11-globals_overwrite.patch
@@ -0,0 +1,559 @@
+--- ext/standard/array.c 2004-12-23 17:40:03.000000000 +0100
++++ ext/standard/array.c 2005-10-31 23:26:23.000000000 +0100
+@@ -22,7 +22,7 @@
+ */
+
+
+-/* $Id: array.c,v 1.199.2.42 2004/12/23 16:40:03 tony2001 Exp $ */
++/* $Id: array.c,v 1.199.2.44.2.9 2005/10/03 14:05:07 iliaa Exp $ */
+
+ #include "php.h"
+ #include "php_ini.h"
+@@ -631,7 +640,7 @@
+ s = *((Bucket **) b);
+
+ if (f->nKeyLength) {
+- Z_STRVAL(key1) = estrndup(f->arKey, f->nKeyLength);
++ Z_STRVAL(key1) = estrndup(f->arKey, f->nKeyLength-1);
+ Z_STRLEN(key1) = f->nKeyLength-1;
+ Z_TYPE(key1) = IS_STRING;
+ } else {
+@@ -639,7 +648,7 @@
+ Z_TYPE(key1) = IS_LONG;
+ }
+ if (s->nKeyLength) {
+- Z_STRVAL(key2) = estrndup(s->arKey, s->nKeyLength);
++ Z_STRVAL(key2) = estrndup(s->arKey, s->nKeyLength-1);
+ Z_STRLEN(key2) = s->nKeyLength-1;
+ Z_TYPE(key2) = IS_STRING;
+ } else {
+@@ -1243,6 +1252,10 @@
+ /* break omitted intentionally */
+
+ case EXTR_OVERWRITE:
++ /* GLOBALS protection */
++ if (var_exists && !strcmp(var_name, "GLOBALS")) {
++ break;
++ }
+ smart_str_appendl(&final_name, var_name, var_name_len);
+ break;
+
+@@ -1291,14 +1304,18 @@
+ zval **orig_var;
+
+ if (zend_hash_find(EG(active_symbol_table), final_name.c, final_name.len+1, (void **) &orig_var) == SUCCESS) {
+- zval_ptr_dtor(orig_var);
+-
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(entry);
+ zval_add_ref(entry);
+
++ zval_ptr_dtor(orig_var);
++
+ *orig_var = *entry;
+ } else {
+- (*entry)->is_ref = 1;
++ if ((*var_array)->refcount > 1) {
++ SEPARATE_ZVAL_TO_MAKE_IS_REF(entry);
++ } else {
++ (*entry)->is_ref = 1;
++ }
+ zval_add_ref(entry);
+ zend_hash_update(EG(active_symbol_table), final_name.c, final_name.len+1, (void **) entry, sizeof(zval *), NULL);
+ }
+@@ -1818,8 +1835,8 @@
+ hashtable and replace it with new one */
+ new_hash = php_splice(Z_ARRVAL_P(stack), 0, 0, &args[1], argc-1, NULL);
+ zend_hash_destroy(Z_ARRVAL_P(stack));
+- efree(Z_ARRVAL_P(stack));
+- Z_ARRVAL_P(stack) = new_hash;
++ *Z_ARRVAL_P(stack) = *new_hash;
++ FREE_HASHTABLE(new_hash);
+
+ /* Clean up and return the number of elements in the stack */
+ efree(args);
+@@ -1896,8 +1913,8 @@
+
+ /* Replace input array's hashtable with the new one */
+ zend_hash_destroy(Z_ARRVAL_P(array));
+- efree(Z_ARRVAL_P(array));
+- Z_ARRVAL_P(array) = new_hash;
++ *Z_ARRVAL_P(array) = *new_hash;
++ FREE_HASHTABLE(new_hash);
+
+ /* Clean up */
+ if (argc == 4)
+@@ -2384,8 +2401,8 @@
+
+ /* Copy the result hash into return value */
+ zend_hash_destroy(Z_ARRVAL_P(return_value));
+- efree(Z_ARRVAL_P(return_value));
+- Z_ARRVAL_P(return_value) = new_hash;
++ *Z_ARRVAL_P(return_value) = *new_hash;
++ FREE_HASHTABLE(new_hash);
+
+ /* Clean up */
+ efree(pads);
+@@ -2483,7 +2500,7 @@
+ zend_hash_index_update(Z_ARRVAL_P(return_value), num_key, entry, sizeof(entry), NULL);
+ break;
+ case HASH_KEY_IS_STRING:
+- new_key=estrndup(string_key,str_key_len);
++ new_key=estrndup(string_key,str_key_len - 1);
+ if (change_to_upper)
+ php_strtoupper(new_key, str_key_len - 1);
+ else
+@@ -2609,6 +2626,15 @@
+ /* copy the argument array */
+ *return_value = **args[0];
+ zval_copy_ctor(return_value);
++ if (return_value->value.ht == &EG(symbol_table)) {
++ HashTable *ht;
++ zval *tmp;
++
++ ALLOC_HASHTABLE(ht);
++ zend_hash_init(ht, 0, NULL, ZVAL_PTR_DTOR, 0);
++ zend_hash_copy(ht, return_value->value.ht, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *));
++ return_value->value.ht = ht;
++ }
+
+ /* go through the lists and look for common values */
+ while (*ptrs[0]) {
+@@ -2759,6 +2785,15 @@
+ /* copy the argument array */
+ *return_value = **args[0];
+ zval_copy_ctor(return_value);
++ if (return_value->value.ht == &EG(symbol_table)) {
++ HashTable *ht;
++ zval *tmp;
++
++ ALLOC_HASHTABLE(ht);
++ zend_hash_init(ht, 0, NULL, ZVAL_PTR_DTOR, 0);
++ zend_hash_copy(ht, return_value->value.ht, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *));
++ return_value->value.ht = ht;
++ }
+
+ /* go through the lists and look for values of ptr[0]
+ that are not in the others */
+@@ -3229,8 +3264,11 @@
+ efree(callback_name);
+
+ if (ZEND_NUM_ARGS() > 2) {
+- convert_to_long_ex(initial);
+- result = *initial;
++ ALLOC_ZVAL(result);
++ *result = **initial;
++ zval_copy_ctor(result);
++ convert_to_long(result);
++ INIT_PZVAL(result);
+ } else {
+ MAKE_STD_ZVAL(result);
+ ZVAL_NULL(result);
+@@ -3246,6 +3284,7 @@
+ if (result) {
+ *return_value = *result;
+ zval_copy_ctor(return_value);
++ zval_ptr_dtor(&result);
+ }
+ return;
+ }
+@@ -3282,6 +3321,7 @@
+ PHP_FUNCTION(array_filter)
+ {
+ zval **input, **callback = NULL;
++ zval *array, *func = NULL;
+ zval **operand;
+ zval **args[1];
+ zval *retval = NULL;
+@@ -3300,9 +3340,13 @@
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The first argument should be an array");
+ return;
+ }
++ if (callback) {
++ func = *callback;
++ }
++ array = *input;
+
+ if (ZEND_NUM_ARGS() > 1) {
+- if (!zend_is_callable(*callback, 0, &callback_name)) {
++ if (!zend_is_callable(func, 0, &callback_name)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The second argument, '%s', should be a valid callback", callback_name);
+ efree(callback_name);
+ return;
+@@ -3311,16 +3355,16 @@
+ }
+
+ array_init(return_value);
+- if (zend_hash_num_elements(Z_ARRVAL_PP(input)) == 0)
++ if (zend_hash_num_elements(Z_ARRVAL_P(array)) == 0)
+ return;
+
+- for (zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(input), &pos);
+- zend_hash_get_current_data_ex(Z_ARRVAL_PP(input), (void **)&operand, &pos) == SUCCESS;
+- zend_hash_move_forward_ex(Z_ARRVAL_PP(input), &pos)) {
++ for (zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(array), &pos);
++ zend_hash_get_current_data_ex(Z_ARRVAL_P(array), (void **)&operand, &pos) == SUCCESS;
++ zend_hash_move_forward_ex(Z_ARRVAL_P(array), &pos)) {
+
+- if (callback) {
++ if (func) {
+ args[0] = operand;
+- if (call_user_function_ex(EG(function_table), NULL, *callback, &retval, 1, args, 0, NULL TSRMLS_CC) == SUCCESS && retval) {
++ if (call_user_function_ex(EG(function_table), NULL, func, &retval, 1, args, 0, NULL TSRMLS_CC) == SUCCESS && retval) {
+ if (!zend_is_true(retval)) {
+ zval_ptr_dtor(&retval);
+ continue;
+@@ -3334,7 +3378,7 @@
+ continue;
+
+ zval_add_ref(operand);
+- switch (zend_hash_get_current_key_ex(Z_ARRVAL_PP(input), &string_key, &string_key_len, &num_key, 0, &pos)) {
++ switch (zend_hash_get_current_key_ex(Z_ARRVAL_P(array), &string_key, &string_key_len, &num_key, 0, &pos)) {
+ case HASH_KEY_IS_STRING:
+ zend_hash_update(Z_ARRVAL_P(return_value), string_key,
+ string_key_len, operand, sizeof(zval *), NULL);
+@@ -3401,6 +3445,7 @@
+ efree(array_pos);
+ return;
+ }
++ SEPARATE_ZVAL_IF_NOT_REF(pargs[i]);
+ args[i] = *pargs[i];
+ array_len[i] = zend_hash_num_elements(Z_ARRVAL_PP(pargs[i]));
+ if (array_len[i] > maxlen) {
+--- ext/standard/basic_functions.c 2005-01-18 12:01:20.000000000 +0100
++++ ext/standard/basic_functions.c 2005-10-31 23:29:26.000000000 +0100
+@@ -17,7 +17,7 @@
+ +----------------------------------------------------------------------+
+ */
+
+-/* $Id: basic_functions.c,v 1.543.2.47 2005/01/18 11:01:20 sniper Exp $ */
++/* $Id: basic_functions.c,v 1.543.2.51.2.3 2005/09/29 16:31:48 iliaa Exp $ */
+
+ #include "php.h"
+ #include "php_streams.h"
+@@ -42,18 +42,7 @@
+ #include <time.h>
+ #include <stdio.h>
+
+-#ifndef NETWARE
+ #include <netdb.h>
+-#else
+-/*#include "netware/env.h"*/ /* Temporary */
+-#ifdef NEW_LIBC /* Same headers hold good for Winsock and Berkeley sockets */
+-#include <netinet/in.h>
+-/*#include <arpa/inet.h>*/
+-#include <netdb.h>
+-#else
+-#include <sys/socket.h>
+-#endif
+-#endif
+
+ #if HAVE_ARPA_INET_H
+ # include <arpa/inet.h>
+@@ -813,8 +802,8 @@
+ PHP_FE(prev, first_arg_force_ref)
+ PHP_FE(next, first_arg_force_ref)
+ PHP_FE(reset, first_arg_force_ref)
+- PHP_FE(current, first_arg_force_ref)
+- PHP_FE(key, first_arg_force_ref)
++ PHP_FE(current, NULL)
++ PHP_FE(key, NULL)
+ PHP_FE(min, NULL)
+ PHP_FE(max, NULL)
+ PHP_FE(in_array, NULL)
+@@ -944,6 +933,13 @@
+ static void php_putenv_destructor(putenv_entry *pe)
+ {
+ if (pe->previous_value) {
++#if _MSC_VER
++ /* VS.Net has a bug in putenv() when setting a variable that
++ * is already set; if the SetEnvironmentVariable() API call
++ * fails, the Crt will double free() a string.
++ * We try to avoid this by setting our own value first */
++ SetEnvironmentVariable(pe->key, "bugbug");
++#endif
+ putenv(pe->previous_value);
+ } else {
+ # if HAVE_UNSETENV
+@@ -1232,11 +1228,10 @@
+ }
+ STR_FREE(BG(locale_string));
+
+- if (FG(stream_wrappers)) {
+- zend_hash_destroy(FG(stream_wrappers));
+- efree(FG(stream_wrappers));
+- FG(stream_wrappers) = NULL;
+- }
++ /*
++ FG(stream_wrappers) are destroyed
++ during php_request_shutdown()
++ */
+
+ PHP_RSHUTDOWN(fsock) (SHUTDOWN_FUNC_ARGS_PASSTHRU);
+ PHP_RSHUTDOWN(filestat) (SHUTDOWN_FUNC_ARGS_PASSTHRU);
+@@ -1430,6 +1425,14 @@
+ }
+ }
+
++#if _MSC_VER
++ /* VS.Net has a bug in putenv() when setting a variable that
++ * is already set; if the SetEnvironmentVariable() API call
++ * fails, the Crt will double free() a string.
++ * We try to avoid this by setting our own value first */
++ SetEnvironmentVariable(pe.key, "bugbug");
++#endif
++
+ if (putenv(pe.putenv_string) == 0) { /* success */
+ zend_hash_add(&BG(putenv_ht), pe.key, pe.key_len+1, (void **) &pe, sizeof(putenv_entry), NULL);
+ #ifdef HAVE_TZSET
+@@ -2089,17 +2092,21 @@
+ static int user_shutdown_function_call(php_shutdown_function_entry *shutdown_function_entry TSRMLS_DC)
+ {
+ zval retval;
++ char *function_name = NULL;
+
+- if (call_user_function( EG(function_table), NULL,
+- shutdown_function_entry->arguments[0],
+- &retval,
+- shutdown_function_entry->arg_count - 1,
+- shutdown_function_entry->arguments + 1
+- TSRMLS_CC ) == SUCCESS ) {
++ if (!zend_is_callable(shutdown_function_entry->arguments[0], 0, &function_name)) {
++ php_error(E_WARNING, "(Registered shutdown functions) Unable to call %s() - function does not exist", function_name);
++ } else if (call_user_function(EG(function_table), NULL,
++ shutdown_function_entry->arguments[0],
++ &retval,
++ shutdown_function_entry->arg_count - 1,
++ shutdown_function_entry->arguments + 1
++ TSRMLS_CC ) == SUCCESS)
++ {
+ zval_dtor(&retval);
+-
+- } else {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call %s() - function does not exist", Z_STRVAL_P(shutdown_function_entry->arguments[0]));
++ }
++ if (function_name) {
++ efree(function_name);
+ }
+ return 0;
+ }
+@@ -2192,6 +2199,7 @@
+ PHP_FUNCTION(register_shutdown_function)
+ {
+ php_shutdown_function_entry shutdown_function_entry;
++ char *function_name = NULL;
+ int i;
+
+ shutdown_function_entry.arg_count = ZEND_NUM_ARGS();
+@@ -2200,26 +2208,31 @@
+ WRONG_PARAM_COUNT;
+ }
+
+- shutdown_function_entry.arguments = (pval **) safe_emalloc(sizeof(pval *), shutdown_function_entry.arg_count, 0);
++ shutdown_function_entry.arguments = (zval **) safe_emalloc(sizeof(zval *), shutdown_function_entry.arg_count, 0);
+
+ if (zend_get_parameters_array(ht, shutdown_function_entry.arg_count, shutdown_function_entry.arguments) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+- /* Prevent entering of anything but arrays/strings */
+- if (Z_TYPE_P(shutdown_function_entry.arguments[0]) != IS_ARRAY) {
+- convert_to_string(shutdown_function_entry.arguments[0]);
+- }
+-
+- if (!BG(user_shutdown_function_names)) {
+- ALLOC_HASHTABLE(BG(user_shutdown_function_names));
+- zend_hash_init(BG(user_shutdown_function_names), 0, NULL, (void (*)(void *)) user_shutdown_function_dtor, 0);
+- }
++ /* Prevent entering of anything but valid callback (syntax check only!) */
++ if (!zend_is_callable(shutdown_function_entry.arguments[0], 1, &function_name)) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid shutdown callback '%s' passed", function_name);
++ efree(shutdown_function_entry.arguments);
++ RETVAL_FALSE;
++ } else {
++ if (!BG(user_shutdown_function_names)) {
++ ALLOC_HASHTABLE(BG(user_shutdown_function_names));
++ zend_hash_init(BG(user_shutdown_function_names), 0, NULL, (void (*)(void *)) user_shutdown_function_dtor, 0);
++ }
+
+- for (i = 0; i < shutdown_function_entry.arg_count; i++) {
+- shutdown_function_entry.arguments[i]->refcount++;
++ for (i = 0; i < shutdown_function_entry.arg_count; i++) {
++ shutdown_function_entry.arguments[i]->refcount++;
++ }
++ zend_hash_next_index_insert(BG(user_shutdown_function_names), &shutdown_function_entry, sizeof(php_shutdown_function_entry), NULL);
++ }
++ if (function_name) {
++ efree(function_name);
+ }
+- zend_hash_next_index_insert(BG(user_shutdown_function_names), &shutdown_function_entry, sizeof(php_shutdown_function_entry), NULL);
+ }
+ /* }}} */
+
+@@ -3014,11 +3027,25 @@
+ prefix = va_arg(args, char *);
+ prefix_len = va_arg(args, uint);
+
+- new_key_len = prefix_len + hash_key->nKeyLength;
+- new_key = (char *) emalloc(new_key_len);
++ if (!prefix_len) {
++ if (!hash_key->nKeyLength) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Numeric key detected - possible security hazard.");
++ return 0;
++ } else if (!strcmp(hash_key->arKey, "GLOBALS")) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Attempted GLOBALS variable overwrite.");
++ return 0;
++ }
++ }
++
++ if (hash_key->nKeyLength) {
++ new_key_len = prefix_len + hash_key->nKeyLength;
++ new_key = (char *) emalloc(new_key_len);
+
+- memcpy(new_key, prefix, prefix_len);
+- memcpy(new_key+prefix_len, hash_key->arKey, hash_key->nKeyLength);
++ memcpy(new_key, prefix, prefix_len);
++ memcpy(new_key+prefix_len, hash_key->arKey, hash_key->nKeyLength);
++ } else {
++ new_key_len = spprintf(&new_key, 0, "%s%ld", prefix, hash_key->h);
++ }
+
+ zend_hash_del(&EG(symbol_table), new_key, new_key_len);
+ ZEND_SET_SYMBOL_WITH_LENGTH(&EG(symbol_table), new_key, new_key_len, *var, (*var)->refcount+1, 0);
+--- ext/standard/string.c 2005-01-20 18:57:41.000000000 +0100
++++ ext/standard/string.c 2005-10-31 23:34:37.000000000 +0100
+@@ -18,7 +18,7 @@
+ +----------------------------------------------------------------------+
+ */
+
+-/* $Id: string.c,v 1.333.2.48 2005/01/20 17:57:41 iliaa Exp $ */
++/* $Id: string.c,v 1.333.2.52.2.1 2005/09/28 22:34:04 iliaa Exp $ */
+
+ /* Synced with php 3.0 revision 1.193 1999-06-16 [ssb] */
+
+@@ -1317,8 +1317,6 @@
+ if (!Z_STRLEN_PP(needle)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty delimiter.");
+ efree(haystack_orig);
+- zval_ptr_dtor(haystack);
+- zval_ptr_dtor(needle);
+ RETURN_FALSE;
+ }
+
+@@ -1339,8 +1337,6 @@
+ RETVAL_FALSE;
+ }
+
+- zval_ptr_dtor(haystack);
+- zval_ptr_dtor(needle);
+ efree(haystack_orig);
+ }
+ /* }}} */
+@@ -1576,7 +1572,13 @@
+ }
+
+ if (chunklen > Z_STRLEN_PP(p_str)) {
+- RETURN_STRINGL(Z_STRVAL_PP(p_str), Z_STRLEN_PP(p_str), 1);
++ /* to maintain BC, we must return original string + ending */
++ result_len = endlen + Z_STRLEN_PP(p_str);
++ result = emalloc(result_len + 1);
++ memcpy(result, Z_STRVAL_PP(p_str), Z_STRLEN_PP(p_str));
++ memcpy(result + Z_STRLEN_PP(p_str), end, endlen);
++ result[result_len] = '\0';
++ RETURN_STRINGL(result, result_len, 0);
+ }
+
+ if (!Z_STRLEN_PP(p_str)) {
+@@ -3169,7 +3179,6 @@
+ zval *sarg;
+ char *res = NULL;
+ int argCount;
+- int old_rg;
+
+ argCount = ARG_COUNT(ht);
+ if (argCount < 1 || argCount > 2 || zend_get_parameters_ex(argCount, &arg, &arrayArg) == FAILURE) {
+@@ -3182,19 +3191,18 @@
+ res = estrndup(Z_STRVAL_P(sarg), Z_STRLEN_P(sarg));
+ }
+
+- old_rg = PG(register_globals);
+ if (argCount == 1) {
+- PG(register_globals) = 1;
+- sapi_module.treat_data(PARSE_STRING, res, NULL TSRMLS_CC);
++ zval tmp;
++ Z_ARRVAL(tmp) = EG(active_symbol_table);
++
++ sapi_module.treat_data(PARSE_STRING, res, &tmp TSRMLS_CC);
+ } else {
+- PG(register_globals) = 0;
+ /* Clear out the array that was passed in. */
+ zval_dtor(*arrayArg);
+ array_init(*arrayArg);
+
+ sapi_module.treat_data(PARSE_STRING, res, *arrayArg TSRMLS_CC);
+ }
+- PG(register_globals) = old_rg;
+ }
+ /* }}} */
+
+--- main/php_variables.c 2004-10-18 17:08:46.000000000 +0200
++++ main/php_variables.c 2005-10-31 23:39:38.000000000 +0100
+@@ -16,7 +16,7 @@
+ | Zeev Suraski <zeev@zend.com> |
+ +----------------------------------------------------------------------+
+ */
+-/* $Id: php_variables.c,v 1.45.2.8 2004/10/18 15:08:46 tony2001 Exp $ */
++/* $Id: php_variables.c,v 1.45.2.13.2.4 2005/10/02 11:33:27 rrichards Exp $ */
+
+ #include <stdio.h>
+ #include "php.h"
+@@ -73,6 +73,10 @@
+ symtable1 = Z_ARRVAL_P(track_vars_array);
+ } else if (PG(register_globals)) {
+ symtable1 = EG(active_symbol_table);
++ /* GLOBALS hijack attempt, reject parameter */
++ if (!strncmp("GLOBALS", var, sizeof("GLOBALS")) || !strncmp("GLOBALS", var, sizeof("GLOBALS[")-1)) {
++ return;
++ }
+ }
+ if (!symtable1) {
+ /* Nothing to do */
+@@ -99,6 +103,13 @@
+ zval_dtor(val);
+ return;
+ }
++
++ /* GLOBALS hijack attempt, reject parameter */
++ if (symtable1 == EG(active_symbol_table) && !strcmp("GLOBALS", var)) {
++ zval_dtor(val);
++ return;
++ }
++
+ /* ensure that we don't have spaces or dots in the variable name (not binary safe) */
+ for (p=var; *p; p++) {
+ switch(*p) {
+@@ -182,11 +193,25 @@
+ if (!index) {
+ zend_hash_next_index_insert(symtable1, &gpc_element, sizeof(zval *), (void **) &gpc_element_p);
+ } else {
++ zval **tmp;
++
+ if (PG(magic_quotes_gpc) && (index!=var)) {
+ char *escaped_index = php_addslashes(index, index_len, &index_len, 0 TSRMLS_CC);
++
++ if (PG(http_globals)[TRACK_VARS_COOKIE] && symtable1 == Z_ARRVAL_P(PG(http_globals)[TRACK_VARS_COOKIE]) &&
++ zend_hash_find(symtable1, escaped_index, index_len+1, (void **) &tmp) != FAILURE) {
++ efree(escaped_index);
++ break;
++ }
++
+ zend_hash_update(symtable1, escaped_index, index_len+1, &gpc_element, sizeof(zval *), (void **) &gpc_element_p);
+ efree(escaped_index);
+ } else {
++ if (PG(http_globals)[TRACK_VARS_COOKIE] && symtable1 == Z_ARRVAL_P(PG(http_globals)[TRACK_VARS_COOKIE]) &&
++ zend_hash_find(symtable1, index, index_len+1, (void **) &tmp) != FAILURE) {
++ break;
++ }
++
+ zend_hash_update(symtable1, index, index_len+1, &gpc_element, sizeof(zval *), (void **) &gpc_element_p);
+ }
+ }
diff --git a/dev-lang/php/files/4.3.11/php4.3.11-mbstring-header_inj.patch b/dev-lang/php/files/4.3.11/php4.3.11-mbstring-header_inj.patch
new file mode 100644
index 0000000..1eb4c98
--- /dev/null
+++ b/dev-lang/php/files/4.3.11/php4.3.11-mbstring-header_inj.patch
@@ -0,0 +1,151 @@
+--- ext/mbstring/mbstring.c 2005-02-21 09:03:47.000000000 +0100
++++ ext/mbstring/mbstring.c 2005-12-03 02:34:47.000000000 +0100
+@@ -17,7 +17,7 @@
+ +----------------------------------------------------------------------+
+ */
+
+-/* $Id: mbstring.c,v 1.142.2.47 2005/02/21 08:03:47 moriyoshi Exp $ */
++/* $Id: mbstring.c,v 1.142.2.47.2.5 2005/11/21 23:21:19 hirokawa Exp $ */
+
+ /*
+ * PHP4 Multibyte String module "mbstring"
+@@ -55,6 +55,7 @@
+ #include "mbstring.h"
+ #include "ext/standard/php_string.h"
+ #include "ext/standard/php_mail.h"
++#include "ext/standard/exec.h"
+ #include "ext/standard/url.h"
+ #include "main/php_output.h"
+ #include "ext/standard/info.h"
+@@ -2923,16 +2924,17 @@
+ }
+ /* }}} */
+
+-/* {{{ proto string mb_encode_mimeheader(string str [, string charset [, string transfer-encoding [, string linefeed]]])
++/* {{{ proto string mb_encode_mimeheader(string str [, string charset [, string transfer-encoding [, string linefeed [, int indent]]]])
+ Converts the string to MIME "encoded-word" in the format of =?charset?(B|Q)?encoded_string?= */
+ PHP_FUNCTION(mb_encode_mimeheader)
+ {
+- pval **argv[4];
++ pval **argv[5];
+ enum mbfl_no_encoding charset, transenc;
+ mbfl_string string, result, *ret;
+ char *p, *linefeed;
++ int indent;
+
+- if (ZEND_NUM_ARGS() < 1 || ZEND_NUM_ARGS() > 4 || zend_get_parameters_array_ex(ZEND_NUM_ARGS(), argv) == FAILURE) {
++ if (ZEND_NUM_ARGS() < 1 || ZEND_NUM_ARGS() > 5 || zend_get_parameters_array_ex(ZEND_NUM_ARGS(), argv) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+@@ -2969,6 +2971,12 @@
+ linefeed = Z_STRVAL_PP(argv[3]);
+ }
+
++ indent = 0;
++ if (ZEND_NUM_ARGS() >= 5) {
++ convert_to_long_ex(argv[4]);
++ indent = Z_LVAL_PP(argv[4]);
++ }
++
+ convert_to_string_ex(argv[0]);
+ mbfl_string_init(&string);
+ mbfl_string_init(&result);
+@@ -2976,7 +2984,7 @@
+ string.no_encoding = MBSTRG(current_internal_encoding);
+ string.val = Z_STRVAL_PP(argv[0]);
+ string.len = Z_STRLEN_PP(argv[0]);
+- ret = mbfl_mime_header_encode(&string, &result, charset, transenc, linefeed, 0);
++ ret = mbfl_mime_header_encode(&string, &result, charset, transenc, linefeed, indent);
+ if (ret != NULL) {
+ RETVAL_STRINGL((char *)ret->val, ret->len, 0) /* the string is already strdup()'ed */
+ } else {
+@@ -3459,6 +3467,22 @@
+ * Sends an email message with MIME scheme
+ */
+ #if HAVE_SENDMAIL
++#define SKIP_LONG_HEADER_SEP_MBSTRING(str, pos) \
++ if (str[pos] == '\r' && str[pos + 1] == '\n' && (str[pos + 2] == ' ' || str[pos + 2] == '\t')) { \
++ pos += 3; \
++ while (str[pos] == ' ' || str[pos] == '\t') { \
++ pos++; \
++ } \
++ continue; \
++ } \
++ else if (str[pos] == '\n' && (str[pos + 1] == ' ' || str[pos + 1] == '\t')) { \
++ pos += 2; \
++ while (str[pos] == ' ' || str[pos] == '\t') { \
++ pos++; \
++ } \
++ continue; \
++ } \
++
+ PHP_FUNCTION(mb_send_mail)
+ {
+ int argc, n;
+@@ -3474,6 +3498,8 @@
+ mbfl_memory_device device; /* automatic allocateable buffer for additional header */
+ const mbfl_language *lang;
+ int err = 0;
++ char *to_r;
++ int to_len, i;
+
+ /* initialize */
+ mbfl_memory_device_init(&device, 0, 0);
+@@ -3500,6 +3526,32 @@
+ convert_to_string_ex(argv[0]);
+ if (Z_STRVAL_PP(argv[0])) {
+ to = Z_STRVAL_PP(argv[0]);
++ to_len = Z_STRLEN_PP(argv[0]);
++ if (to_len > 0) {
++ to_r = estrndup(to, to_len);
++ for (; to_len; to_len--) {
++ if (!isspace((unsigned char) to_r[to_len - 1])) {
++ break;
++ }
++ to_r[to_len - 1] = '\0';
++ }
++ for (i = 0; to_r[i]; i++) {
++ if (iscntrl((unsigned char) to_r[i])) {
++ /* According to RFC 822, section 3.1.1 long headers may be
++separated into
++ * parts using CRLF followed at least one linear-white-space
++character ('\t' or ' ').
++ * To prevent these separators from being replaced with a space,
++we use the
++ * SKIP_LONG_HEADER_SEP_MBSTRING to skip over them.
++ */
++ SKIP_LONG_HEADER_SEP_MBSTRING(to_r, i);
++ to_r[i] = ' ';
++ }
++ }
++ } else {
++ to_r = to;
++ }
+ } else {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Missing To: field");
+ err = 1;
+@@ -3594,12 +3646,22 @@
+ extra_cmd = Z_STRVAL_PP(argv[4]);
+ }
+
+- if (!err && php_mail(to, subject, message, headers, extra_cmd TSRMLS_CC)) {
++ if (extra_cmd) {
++ extra_cmd = php_escape_shell_cmd(extra_cmd);
++ }
++
++ if (!err && php_mail(to_r, subject, message, headers, extra_cmd TSRMLS_CC)) {
+ RETVAL_TRUE;
+ } else {
+ RETVAL_FALSE;
+ }
+
++ if (to_r != to) {
++ efree(to_r);
++ }
++ if (extra_cmd) {
++ efree(extra_cmd);
++ }
+ if (subject_buf) {
+ efree((void *)subject_buf);
+ }
diff --git a/dev-lang/php/files/4.3.11/php4.3.11-multilib-search-path.patch b/dev-lang/php/files/4.3.11/php4.3.11-multilib-search-path.patch
new file mode 100644
index 0000000..6d994cf
--- /dev/null
+++ b/dev-lang/php/files/4.3.11/php4.3.11-multilib-search-path.patch
@@ -0,0 +1,1488 @@
+diff -Nru php-4.3.11.orig/acinclude.m4 php-4.3.11/acinclude.m4
+--- php-4.3.11.orig/acinclude.m4 2005-01-25 14:03:06.000000000 +0100
++++ php-4.3.11/acinclude.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -194,7 +194,7 @@
+ unset ac_new_flags
+ for i in [$]$1; do
+ case [$]i in
+- -L/usr/lib|-L/usr/lib/[)] ;;
++ -L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/[)] ;;
+ *[)] ac_new_flags="[$]ac_new_flags [$]i" ;;
+ esac
+ done
+@@ -645,7 +645,7 @@
+ ])
+
+ AC_DEFUN([PHP_PROG_SENDMAIL],[
+-PHP_ALT_PATH=/usr/bin:/usr/sbin:/usr/etc:/etc:/usr/ucblib:/usr/lib
++PHP_ALT_PATH=/usr/bin:/usr/sbin:/usr/etc:/etc:/usr/ucblib:/usr/lib:/usr/lib64
+ AC_PATH_PROG(PROG_SENDMAIL, sendmail,[], $PATH:$PHP_ALT_PATH)
+ if test -n "$PROG_SENDMAIL"; then
+ AC_DEFINE(HAVE_SENDMAIL,1,[whether you have sendmail])
+@@ -856,7 +856,9 @@
+ dnl add a library to linkpath/runpath
+ dnl
+ AC_DEFUN([PHP_ADD_LIBPATH],[
+- if test "$1" != "/usr/lib"; then
++ case x$1 in
++ x/usr/lib|x/usr/lib64) ;;
++ *)
+ PHP_EXPAND_PATH($1, ai_p)
+ ifelse([$2],,[
+ _PHP_ADD_LIBPATH_GLOBAL([$ai_p])
+@@ -866,8 +868,8 @@
+ else
+ _PHP_ADD_LIBPATH_GLOBAL([$ai_p])
+ fi
+- ])
+- fi
++ ]) ;;
++ esac
+ ])
+
+ dnl
+@@ -1651,15 +1653,20 @@
+ fi
+
+ for i in $PHP_KERBEROS; do
+- if test -f $i/lib/libkrb5.a || test -f $i/lib/libkrb5.$SHLIB_SUFFIX_NAME; then
++ if test -f $i/lib/libkrb5.a -o -f $i/lib/libkrb5.$SHLIB_SUFFIX_NAME; then
+ PHP_KERBEROS_DIR=$i
++ PHP_KERBEROS_LIBDIR=$i/lib
++ break
++ elif test -f $i/lib64/libkrb5.a -o -f $i/lib64/libkrb5.$SHLIB_SUFFIX_NAME; then
++ PHP_KERBEROS_DIR=$i
++ PHP_KERBEROS_LIBDIR=$i/lib64
+ break
+ fi
+ done
+
+ if test "$PHP_KERBEROS_DIR"; then
+ found_kerberos=yes
+- PHP_ADD_LIBPATH($PHP_KERBEROS_DIR/lib, $1)
++ PHP_ADD_LIBPATH($PHP_KERBEROS_LIBDIR, $1)
+ PHP_ADD_LIBRARY(gssapi_krb5, 1, $1)
+ PHP_ADD_LIBRARY(krb5, 1, $1)
+ PHP_ADD_LIBRARY(k5crypto, 1, $1)
+@@ -1727,6 +1734,9 @@
+ if test -r $i/lib/libssl.a -o -r $i/lib/libssl.$SHLIB_SUFFIX_NAME; then
+ OPENSSL_LIBDIR=$i/lib
+ fi
++ if test -r $i/lib64/libssl.a -o -r $i/lib64/libssl.$SHLIB_SUFFIX_NAME; then
++ OPENSSL_LIBDIR=$i/lib64
++ fi
+ test -n "$OPENSSL_INCDIR" && test -n "$OPENSSL_LIBDIR" && break
+ done
+
+@@ -1847,7 +1857,9 @@
+ fi
+
+ if test -f $ICONV_DIR/lib/lib$iconv_lib_name.a ||
+- test -f $ICONV_DIR/lib/lib$iconv_lib_name.$SHLIB_SUFFIX_NAME
++ test -f $ICONV_DIR/lib/lib$iconv_lib_name.$SHLIB_SUFFIX_NAME ||
++ test -f $ICONV_DIR/lib64/lib$iconv_lib_name.a ||
++ test -f $ICONV_DIR/lib64/lib$iconv_lib_name.$SHLIB_SUFFIX_NAME
+ then
+ PHP_CHECK_LIBRARY($iconv_lib_name, libiconv, [
+ found_iconv=yes
+diff -Nru php-4.3.11.orig/ext/bz2/config.m4 php-4.3.11/ext/bz2/config.m4
+--- php-4.3.11.orig/ext/bz2/config.m4 2004-01-21 06:04:50.000000000 +0100
++++ php-4.3.11/ext/bz2/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -19,6 +19,12 @@
+ done
+ fi
+
++ for j in lib64 lib; do
++ if test -d $BZIP_DIR/$j; then
++ BZIP_LIBDIR=$BZIP_DIR/$j
++ fi
++ done
++
+ if test -z "$BZIP_DIR"; then
+ AC_MSG_RESULT(not found)
+ AC_MSG_ERROR(Please reinstall the BZip2 distribution)
+@@ -27,12 +33,12 @@
+ PHP_CHECK_LIBRARY(bz2, BZ2_bzerror,
+ [
+ PHP_ADD_INCLUDE($BZIP_DIR/include)
+- PHP_ADD_LIBRARY_WITH_PATH(bz2, $BZIP_DIR/lib, BZ2_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(bz2, $BZIP_LIBDIR, BZ2_SHARED_LIBADD)
+ AC_DEFINE(HAVE_BZ2,1,[ ])
+ ], [
+ AC_MSG_ERROR(bz2 module requires libbz2 >= 1.0.0)
+ ], [
+- -L$BZIP_DIR/lib
++ -L$BZIP_LIBDIR
+ ])
+
+ PHP_NEW_EXTENSION(bz2, bz2.c, $ext_shared)
+diff -Nru php-4.3.11.orig/ext/curl/config.m4 php-4.3.11/ext/curl/config.m4
+--- php-4.3.11.orig/ext/curl/config.m4 2005-02-09 17:23:49.000000000 +0100
++++ php-4.3.11/ext/curl/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -23,6 +23,12 @@
+ done
+ fi
+
++ for j in lib64 lib; do
++ if test -d $CURL_DIR/$j; then
++ CURL_LIBDIR=$CURL_DIR/$j
++ fi
++ done
++
+ if test -z "$CURL_DIR"; then
+ AC_MSG_RESULT(not found)
+ AC_MSG_ERROR(Please reinstall the libcurl distribution -
+@@ -51,7 +57,7 @@
+
+ PHP_ADD_INCLUDE($CURL_DIR/include)
+ PHP_EVAL_LIBLINE($CURL_LIBS, CURL_SHARED_LIBADD)
+- PHP_ADD_LIBRARY_WITH_PATH(curl, $CURL_DIR/lib, CURL_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(curl, $CURL_LIBDIR, CURL_SHARED_LIBADD)
+
+ PHP_CHECK_LIBRARY(curl,curl_easy_perform,
+ [
+@@ -59,14 +65,14 @@
+ ],[
+ AC_MSG_ERROR(There is something wrong. Please check config.log for more information.)
+ ],[
+- $CURL_LIBS -L$CURL_DIR/lib
++ $CURL_LIBS -L$CURL_LIBDIR
+ ])
+
+ PHP_CHECK_LIBRARY(curl,curl_version_info,
+ [
+ AC_DEFINE(HAVE_CURL_VERSION_INFO,1,[ ])
+ ],[],[
+- $CURL_LIBS -L$CURL_DIR/lib
++ $CURL_LIBS -L$CURL_LIBDIR
+ ])
+
+ dnl if test "$PHP_CURLWRAPPERS" != "no" ; then
+diff -Nru php-4.3.11.orig/ext/dba/config.m4 php-4.3.11/ext/dba/config.m4
+--- php-4.3.11.orig/ext/dba/config.m4 2005-01-22 02:37:12.000000000 +0100
++++ php-4.3.11/ext/dba/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -80,12 +80,18 @@
+ fi
+ done
+
++ for j in lib64 lib; do
++ if test -d $THIS_PREFIX/$j; then
++ THIS_PREFIX_LIBDIR=$THIS_PREFIX/$j
++ fi
++ done
++
+ if test -n "$THIS_INCLUDE"; then
+ PHP_CHECK_LIBRARY(gdbm, gdbm_open, [
+ AC_DEFINE_UNQUOTED(GDBM_INCLUDE_FILE, "$THIS_INCLUDE", [ ])
+ AC_DEFINE(DBA_GDBM, 1, [ ])
+ THIS_LIBS=gdbm
+- ], [], [-L$THIS_PREFIX/lib])
++ ], [], [-L$THIS_PREFIX_LIBDIR])
+ fi
+
+ PHP_DBA_STD_ASSIGN
+@@ -110,14 +116,20 @@
+ break
+ fi
+ done
+-
++
++ for j in lib64 lib; do
++ if test -d $THIS_PREFIX/$j; then
++ THIS_PREFIX_LIBDIR=$THIS_PREFIX/$j
++ fi
++ done
++
+ if test -n "$THIS_INCLUDE"; then
+ for LIB in ndbm db1 c; do
+ PHP_CHECK_LIBRARY($LIB, dbm_open, [
+ AC_DEFINE_UNQUOTED(NDBM_INCLUDE_FILE, "$THIS_INCLUDE", [ ])
+ AC_DEFINE(DBA_NDBM, 1, [ ])
+ THIS_LIBS=$LIB
+- ], [], [-L$THIS_PREFIX/lib])
++ ], [], [-L$THIS_PREFIX_LIBDIR])
+ if test -n "$THIS_LIBS"; then
+ break
+ fi
+@@ -135,25 +147,28 @@
+ dnl parameters(version, library list, function)
+ AC_DEFUN([PHP_DBA_DB_CHECK],[
+ for LIB in $2; do
+- if test -f $THIS_PREFIX/lib/lib$LIB.a -o -f $THIS_PREFIX/lib/lib$LIB.$SHLIB_SUFFIX_NAME; then
+- PHP_TEMP_LDFLAGS(-L$THIS_PREFIX/lib, -l$LIB,[
+- AC_TRY_LINK([
++ for LIBDIR in lib64 lib; do
++ if test -f $THIS_PREFIX/$LIBDIR/lib$LIB.a -o -f $THIS_PREFIX/$LIBDIR/lib$LIB.$SHLIB_SUFFIX_NAME; then
++ PHP_TEMP_LDFLAGS(-L$THIS_PREFIX/$LIBDIR, -l$LIB,[
++ AC_TRY_LINK([
+ #include "$THIS_INCLUDE"
+- ],[
+- $3;
+- ],[
+- AC_EGREP_CPP(yes,[
++ ],[
++ $3;
++ ],[
++ AC_EGREP_CPP(yes,[
+ #include "$THIS_INCLUDE"
+ #if DB_VERSION_MAJOR == $1
+- yes
++ yes
+ #endif
+- ],[
+- THIS_LIBS=$LIB
+- break
++ ],[
++ THIS_LIBS=$LIB
++ break
++ ])
+ ])
+ ])
+- ])
+- fi
++ fi
++ done
++ test -n "$THIS_LIBS" && break
+ done
+ if test -z "$THIS_LIBS"; then
+ AC_MSG_CHECKING(for db$1 major version)
+@@ -314,6 +329,12 @@
+ fi
+ done
+
++ for j in lib64 lib; do
++ if test -d $THIS_PREFIX/$j; then
++ THIS_PREFIX_LIBDIR=$THIS_PREFIX/$j
++ fi
++ done
++
+ if test -n "$THIS_INCLUDE"; then
+ for LIB in dbm c gdbm; do
+ PHP_CHECK_LIBRARY($LIB, dbminit, [
+@@ -328,7 +349,7 @@
+ fi
+ AC_DEFINE(DBA_DBM, 1, [ ])
+ THIS_LIBS=$LIB
+- ], [], [-L$THIS_PREFIX/lib])
++ ], [], [-L$THIS_PREFIX_LIBDIR])
+ if test -n "$THIS_LIBS"; then
+ break
+ fi
+@@ -364,13 +385,19 @@
+ fi
+ done
+
++ for j in lib64 lib; do
++ if test -d $THIS_PREFIX/$j; then
++ THIS_PREFIX_LIBDIR=$THIS_PREFIX/$j
++ fi
++ done
++
+ if test -n "$THIS_INCLUDE"; then
+ for LIB in cdb c; do
+ PHP_CHECK_LIBRARY($LIB, cdb_read, [
+ AC_DEFINE_UNQUOTED(CDB_INCLUDE_FILE, "$THIS_INCLUDE", [ ])
+ AC_DEFINE(DBA_CDB, 1, [ ])
+ THIS_LIBS=$LIB
+- ], [], [-L$THIS_PREFIX/lib])
++ ], [], [-L$THIS_PREFIX_LIBDIR])
+ if test -n "$THIS_LIBS"; then
+ break
+ fi
+diff -Nru php-4.3.11.orig/ext/domxml/config.m4 php-4.3.11/ext/domxml/config.m4
+--- php-4.3.11.orig/ext/domxml/config.m4 2004-12-30 08:02:17.000000000 +0100
++++ php-4.3.11/ext/domxml/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -48,13 +48,15 @@
+ AC_MSG_ERROR(Please reinstall the libxml >= 2.4.14 distribution)
+ fi
+
++ for j in lib64 lib; do
++ if test -d $DOMXML_DIR/$j; then
++ DOMXML_LIBDIR=$DOMXML_DIR/$j
++ fi
++ done
++
+ PHP_DOM_CHECK_VERSION
+
+- if test -f $DOMXML_DIR/lib/libxml2.a -o -f $DOMXML_DIR/lib/libxml2.$SHLIB_SUFFIX_NAME ; then
+- DOM_LIBNAME=xml2
+- else
+- DOM_LIBNAME=xml
+- fi
++ DOM_LIBNAME=xml2
+
+ XML2_CONFIG=$DOMXML_DIR/bin/xml2-config
+
+@@ -62,7 +64,7 @@
+ DOM_LIBS=`$XML2_CONFIG --libs`
+ PHP_EVAL_LIBLINE($DOM_LIBS, DOMXML_SHARED_LIBADD)
+ else
+- PHP_ADD_LIBRARY_WITH_PATH($DOM_LIBNAME, $DOMXML_DIR/lib, DOMXML_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH($DOM_LIBNAME, $DOMXML_LIBDIR, DOMXML_SHARED_LIBADD)
+ fi
+
+ PHP_ADD_INCLUDE($DOMXML_DIR/include$DOMXML_DIR_ADD)
+@@ -70,7 +72,13 @@
+ if test "$PHP_ZLIB_DIR" = "no"; then
+ AC_MSG_ERROR(DOMXML requires ZLIB. Use --with-zlib-dir=<DIR>)
+ else
+- PHP_ADD_LIBRARY_WITH_PATH(z, $PHP_ZLIB_DIR/lib, DOMXML_SHARED_LIBADD)
++ for j in lib64 lib; do
++ if test -d $PHP_ZLIB_DIR/$j; then
++ PHP_ZLIB_LIBDIR=$PHP_ZLIB_DIR/$j
++ fi
++ done
++
++ PHP_ADD_LIBRARY_WITH_PATH(z, $PHP_ZLIB_LIBDIR, DOMXML_SHARED_LIBADD)
+ fi
+
+ AC_DEFINE(HAVE_DOMXML,1,[ ])
+@@ -135,27 +143,35 @@
+ AC_MSG_ERROR(Please reinstall the libxslt >= 1.0.3 distribution)
+ fi
+
++ for j in lib64 lib; do
++ if test -d $DOMXSLT_DIR/$j; then
++ DOMXSLT_LIBDIR=$DOMXSLT_DIR/$j
++ fi
++ done
++
+ PHP_DOM_XSLT_CHECK_VERSION
+
+- PHP_ADD_LIBRARY_WITH_PATH(xslt, $DOMXSLT_DIR/lib, DOMXML_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(xslt, $DOMXSLT_LIBDIR, DOMXML_SHARED_LIBADD)
+
+ PHP_ADD_INCLUDE($DOMXSLT_DIR/include)
+
+ if test "$PHP_DOM" = "no"; then
+ AC_MSG_ERROR(DOMXSLT requires DOMXML. Use --with-dom=<DIR>)
+ fi
+-
+- if test -f $DOMXML_DIR/lib/libxml2.a -o -f $DOMXML_DIR/lib/libxml2.$SHLIB_SUFFIX_NAME ; then
+- DOM_LIBNAME=xml2
+- else
+- DOM_LIBNAME=xml
+- fi
+
+- PHP_ADD_LIBRARY_WITH_PATH($DOM_LIBNAME, $DOMXML_DIR/lib, DOMXML_SHARED_LIBADD)
++ for j in lib64 lib; do
++ if test -d $DOMXML_DIR/$j; then
++ DOMXML_LIBDIR=$DOMXML_DIR/$j
++ fi
++ done
++
++ DOM_LIBNAME=xml2
++
++ PHP_ADD_LIBRARY_WITH_PATH($DOM_LIBNAME, $DOMXML_LIBDIR, DOMXML_SHARED_LIBADD)
+ PHP_ADD_INCLUDE($DOMXML_DIR/include$DOMXML_DIR_ADD)
+
+- if test -f $DOMXML_DIR/lib/libxsltbreakpoint.a -o -f $DOMXML_DIR/lib/libxsltbreakpoint.$SHLIB_SUFFIX_NAME ; then
+- PHP_ADD_LIBRARY_WITH_PATH(xsltbreakpoint, $DOMXML_DIR/lib, DOMXML_SHARED_LIBADD)
++ if test -f $DOMXML_LIBDIR/libxsltbreakpoint.a -o -f $DOMXML_LIBDIR/libxsltbreakpoint.$SHLIB_SUFFIX_NAME ; then
++ PHP_ADD_LIBRARY_WITH_PATH(xsltbreakpoint, $DOMXML_LIBDIR, DOMXML_SHARED_LIBADD)
+ fi
+
+ AC_DEFINE(HAVE_DOMXSLT,1,[ ])
+@@ -185,9 +201,15 @@
+ AC_MSG_ERROR(Please reinstall the libxslt >= 1.0.3 distribution)
+ fi
+
++ for j in lib64 lib; do
++ if test -d $DOMEXSLT_DIR/$j; then
++ DOMEXSLT_LIBDIR=$DOMEXSLT_DIR/$j
++ fi
++ done
++
+ PHP_DOM_EXSLT_CHECK_VERSION
+
+- PHP_ADD_LIBRARY_WITH_PATH(exslt, $DOMEXSLT_DIR/lib, DOMXML_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(exslt, $DOMEXSLT_LIBDIR, DOMXML_SHARED_LIBADD)
+
+ PHP_ADD_INCLUDE($DOMEXSLT_DIR/include)
+
+diff -Nru php-4.3.11.orig/ext/gd/config.m4 php-4.3.11/ext/gd/config.m4
+--- php-4.3.11.orig/ext/gd/config.m4 2005-01-04 07:52:18.000000000 +0100
++++ php-4.3.11/ext/gd/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -50,8 +50,15 @@
+ AC_DEFUN([PHP_GD_JPEG],[
+ if test "$PHP_JPEG_DIR" != "no"; then
+
+- for i in $PHP_JPEG_DIR /usr/local /usr; do
+- test -f $i/lib/libjpeg.$SHLIB_SUFFIX_NAME -o -f $i/lib/libjpeg.a && GD_JPEG_DIR=$i && break
++ for j in lib64 lib; do
++ for i in $PHP_JPEG_DIR /usr/local /usr; do
++ if test -f "$i/$j/libjpeg.$SHLIB_SUFFIX_NAME" -o -f "$i/$j/libjpeg.a"; then
++ GD_JPEG_DIR=$i
++ GD_JPEG_LIB_DIR=$i/$j
++ break
++ fi
++ done
++ test -n "$GD_JPEG_DIR" && break
+ done
+
+ if test -z "$GD_JPEG_DIR"; then
+@@ -61,11 +68,11 @@
+ PHP_CHECK_LIBRARY(jpeg,jpeg_read_header,
+ [
+ PHP_ADD_INCLUDE($GD_JPEG_DIR/include)
+- PHP_ADD_LIBRARY_WITH_PATH(jpeg, $GD_JPEG_DIR/lib, GD_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(jpeg, $GD_JPEG_LIB_DIR, GD_SHARED_LIBADD)
+ ],[
+ AC_MSG_ERROR([Problem with libjpeg.(a|so). Please check config.log for more information.])
+ ],[
+- -L$GD_JPEG_DIR/lib
++ -L$GD_JPEG_LIB_DIR
+ ])
+ else
+ AC_MSG_RESULT([If configure fails try --with-jpeg-dir=<DIR>])
+@@ -75,8 +82,15 @@
+ AC_DEFUN([PHP_GD_PNG],[
+ if test "$PHP_PNG_DIR" != "no"; then
+
+- for i in $PHP_PNG_DIR /usr/local /usr; do
+- test -f $i/lib/libpng.$SHLIB_SUFFIX_NAME -o -f $i/lib/libpng.a && GD_PNG_DIR=$i && break
++ for j in lib64 lib; do
++ for i in $PHP_PNG_DIR /usr/local /usr; do
++ if test -f "$i/$j/libpng.$SHLIB_SUFFIX_NAME" -o -f "$i/$j/libpng.a"; then
++ GD_PNG_DIR=$i
++ GD_PNG_LIB_DIR=$i/$j
++ break
++ fi
++ done
++ test -n "$GD_PNG_DIR" && break
+ done
+
+ if test -z "$GD_PNG_DIR"; then
+@@ -94,12 +108,12 @@
+ PHP_CHECK_LIBRARY(png,png_write_image,
+ [
+ PHP_ADD_INCLUDE($GD_PNG_DIR/include)
+- PHP_ADD_LIBRARY_WITH_PATH(z, $PHP_ZLIB_DIR/lib, GD_SHARED_LIBADD)
+- PHP_ADD_LIBRARY_WITH_PATH(png, $GD_PNG_DIR/lib, GD_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(z, $PHP_ZLIB_LIB_DIR, GD_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(png, $GD_PNG_LIB_DIR, GD_SHARED_LIBADD)
+ ],[
+ AC_MSG_ERROR([Problem with libpng.(a|so) or libz.(a|so). Please check config.log for more information.])
+ ],[
+- -L$PHP_ZLIB_DIR/lib -lz -L$GD_PNG_DIR/lib
++ -L$PHP_ZLIB_LIB_DIR -lz -L$GD_PNG_LIB_DIR
+ ])
+
+ else
+@@ -110,8 +124,15 @@
+ AC_DEFUN([PHP_GD_XPM],[
+ if test "$PHP_XPM_DIR" != "no"; then
+
+- for i in $PHP_XPM_DIR /usr/local /usr/X11R6 /usr; do
+- test -f $i/lib/libXpm.$SHLIB_SUFFIX_NAME -o -f $i/lib/libXpm.a && GD_XPM_DIR=$i && break
++ for j in lib64 lib; do
++ for i in $PHP_XPM_DIR /usr/local /usr/X11R6 /usr; do
++ if test -f "$i/$j/libXpm.$SHLIB_SUFFIX_NAME" -o -f "$i/$j/libXpm.a"; then
++ GD_XPM_DIR=$i
++ GD_XPM_LIB_DIR=$i/$j
++ break
++ fi
++ done
++ test -n "$GD_XPM_DIR" && break
+ done
+
+ if test -z "$GD_XPM_DIR"; then
+@@ -129,12 +150,12 @@
+ PHP_CHECK_LIBRARY(Xpm,XpmFreeXpmImage,
+ [
+ PHP_ADD_INCLUDE($GD_XPM_INC)
+- PHP_ADD_LIBRARY_WITH_PATH(Xpm, $GD_XPM_DIR/lib, GD_SHARED_LIBADD)
+- PHP_ADD_LIBRARY_WITH_PATH(X11, $GD_XPM_DIR/lib, GD_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(Xpm, $GD_XPM_LIB_DIR, GD_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(X11, $GD_XPM_LIB_DIR, GD_SHARED_LIBADD)
+ ],[
+ AC_MSG_ERROR([Problem with libXpm.(a|so) or libX11.(a|so). Please check config.log for more information.])
+ ],[
+- -L$GD_XPM_DIR/lib -lX11
++ -L$GD_XPM_LIB_DIR -lX11
+ ])
+ else
+ AC_MSG_RESULT(If configure fails try --with-xpm-dir=<DIR>)
+@@ -145,25 +166,29 @@
+ if test "$PHP_TTF" != "no"; then
+ if test "$PHP_FREETYPE_DIR" = "no" -o "$PHP_FREETYPE_DIR" = ""; then
+ if test -n "$PHP_TTF"; then
+- for i in $PHP_TTF /usr/local /usr; do
+- if test -f "$i/include/freetype.h"; then
+- TTF_DIR=$i
+- unset TTF_INC_DIR
+- fi
+- if test -f "$i/include/freetype/freetype.h"; then
+- TTF_DIR=$i
+- TTF_INC_DIR=$i/include/freetype
+- fi
+- if test -f "$i/include/freetype1/freetype/freetype.h"; then
+- TTF_DIR=$i
+- TTF_INC_DIR=$i/include/freetype1/freetype
+- fi
++ for j in lib64 lib; do
++ for i in $PHP_TTF /usr/local /usr; do
++ if test -f "$i/$j/libttf.a" -o -f "$i/$j/libttf.$SHLIB_SUFFIX_NAME"; then
++ TTF_DIR=$i
++ TTF_LIB_DIR=$i/$j
++ if test -f "$i/include/freetype.h"; then
++ unset TTF_INC_DIR
++ elif test -f "$i/include/freetype/freetype.h"; then
++ TTF_INC_DIR=$i/include/freetype
++ elif test -f "$i/include/freetype1/freetype/freetype.h"; then
++ TTF_INC_DIR=$i/include/freetype1/freetype
++ else
++ unset TTF_DIR
++ fi
++ fi
++ test -n "$TTF_DIR" && break
++ done
+ test -n "$TTF_DIR" && break
+ done
+ fi
+ if test -n "$TTF_DIR" ; then
+ AC_DEFINE(HAVE_LIBTTF,1,[ ])
+- PHP_ADD_LIBRARY_WITH_PATH(ttf, $TTF_DIR/lib, GD_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(ttf, $TTF_LIB_DIR, GD_SHARED_LIBADD)
+ fi
+ if test -z "$TTF_INC_DIR"; then
+ TTF_INC_DIR=$TTF_DIR/include
+@@ -178,16 +203,21 @@
+ AC_DEFUN([PHP_GD_FREETYPE2],[
+ if test "$PHP_FREETYPE_DIR" != "no"; then
+
+- for i in $PHP_FREETYPE_DIR /usr/local /usr; do
+- if test -f "$i/include/freetype2/freetype/freetype.h"; then
+- FREETYPE2_DIR=$i
+- FREETYPE2_INC_DIR=$i/include/freetype2
+- break
+- fi
++ for j in lib64 lib; do
++ for i in $PHP_FREETYPE_DIR /usr/local /usr; do
++ if test -f "$i/include/freetype2/freetype/freetype.h" && \
++ test -f "$i/$j/libfreetype.a" -o -f "$i/$j/libfreetype.$SHLIB_SUFFIX_NAME"; then
++ FREETYPE2_DIR=$i
++ FREETYPE2_LIB_DIR=$i/$j
++ FREETYPE2_INC_DIR=$i/include/freetype2
++ break
++ fi
++ done
++ test -n "$FREETYPE2_DIR" && break
+ done
+
+ if test -n "$FREETYPE2_DIR" ; then
+- PHP_ADD_LIBRARY_WITH_PATH(freetype, $FREETYPE2_DIR/lib, GD_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(freetype, $FREETYPE2_LIB_DIR, GD_SHARED_LIBADD)
+ PHP_ADD_INCLUDE($FREETYPE2_DIR/include)
+ PHP_ADD_INCLUDE($FREETYPE2_INC_DIR)
+ AC_DEFINE(USE_GD_IMGSTRTTF, 1, [ ])
+@@ -203,8 +233,16 @@
+ AC_DEFUN([PHP_GD_T1LIB],[
+ if test "$PHP_T1LIB" != "no"; then
+
+- for i in $PHP_T1LIB /usr/local /usr; do
+- test -f "$i/include/t1lib.h" && GD_T1_DIR=$i && break
++ for j in lib64 lib; do
++ for i in $PHP_T1LIB /usr/local /usr; do
++ if test -f "$i/include/t1lib.h" && \
++ test -f "$i/$j/libt1.a" -o -f "$i/$j/libt1.$SHLIB_SUFFIX_NAME"; then
++ GD_T1_DIR=$i
++ GD_T1_LIB_DIR=$i/$j
++ break
++ fi
++ done
++ test -n "$GD_T1_DIR" && break
+ done
+
+ if test -z "$GD_T1_DIR"; then
+@@ -215,11 +253,11 @@
+ [
+ AC_DEFINE(HAVE_LIBT1,1,[ ])
+ PHP_ADD_INCLUDE($GD_T1_DIR/include)
+- PHP_ADD_LIBRARY_WITH_PATH(t1, $GD_T1_DIR/lib, GD_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(t1, $GD_T1_LIB_DIR, GD_SHARED_LIBADD)
+ ],[
+ AC_MSG_ERROR([Problem with libt1.(a|so). Please check config.log for more information.])
+ ],[
+- -L$GD_T1_DIR/lib
++ -L$GD_T1_LIB_DIR
+ ])
+ fi
+ ])
+@@ -364,7 +402,7 @@
+ done
+
+ dnl Library path
+- for i in lib/gd1.3 lib/gd lib gd1.3 gd ""; do
++ for i in lib/gd1.3 lib64/gd1.3 lib/gd lib64/gd lib lib64 gd1.3 gd ""; do
+ test -f "$PHP_GD/$i/libgd.$SHLIB_SUFFIX_NAME" -o -f "$PHP_GD/$i/libgd.a" && GD_LIB="$PHP_GD/$i"
+ done
+
+diff -Nru php-4.3.11.orig/ext/gettext/config.m4 php-4.3.11/ext/gettext/config.m4
+--- php-4.3.11.orig/ext/gettext/config.m4 2003-10-01 04:53:58.000000000 +0200
++++ php-4.3.11/ext/gettext/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -14,11 +14,15 @@
+ AC_MSG_ERROR(Cannot locate header file libintl.h)
+ fi
+
+- GETTEXT_LIBDIR=$GETTEXT_DIR/lib
++ for j in lib64 lib; do
++ if test -d $GETTEXT_DIR/$j; then
++ GETTEXT_LIBDIR=$GETTEXT_DIR/$j
++ fi
++ done
++
+ GETTEXT_INCDIR=$GETTEXT_DIR/include
+
+ O_LDFLAGS=$LDFLAGS
+- LDFLAGS="$LDFLAGS -L$GETTEXT_LIBDIR"
+ AC_CHECK_LIB(intl, bindtextdomain, [
+ GETTEXT_LIBS=intl
+ GETTEXT_CHECK_IN_LIB=intl
+diff -Nru php-4.3.11.orig/ext/gmp/config.m4 php-4.3.11/ext/gmp/config.m4
+--- php-4.3.11.orig/ext/gmp/config.m4 2003-11-19 05:44:24.000000000 +0100
++++ php-4.3.11/ext/gmp/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -14,20 +14,26 @@
+ if test -z "$GMP_DIR"; then
+ AC_MSG_ERROR(Unable to locate gmp.h)
+ fi
+-
++
++ for j in lib64 lib; do
++ if test -d $GMP_DIR/$j; then
++ GMP_LIBDIR=$GMP_DIR/$j
++ fi
++ done
++
+ PHP_CHECK_LIBRARY(gmp, __gmp_randinit_lc_2exp_size,
+ [],[
+ PHP_CHECK_LIBRARY(gmp, gmp_randinit_lc_2exp_size,
+ [],[
+ AC_MSG_ERROR([GNU MP Library version 4.1.2 or greater required.])
+ ],[
+- -L$GMP_DIR/lib
++ -L$GMP_LIBDIR
+ ])
+ ],[
+- -L$GMP_DIR/lib
++ -L$GMP_LIBDIR
+ ])
+
+- PHP_ADD_LIBRARY_WITH_PATH(gmp, $GMP_DIR/lib, GMP_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(gmp, $GMP_LIBDIR, GMP_SHARED_LIBADD)
+ PHP_ADD_INCLUDE($GMP_DIR/include)
+
+ PHP_NEW_EXTENSION(gmp, gmp.c, $ext_shared)
+diff -Nru php-4.3.11.orig/ext/iconv/config.m4 php-4.3.11/ext/iconv/config.m4
+--- php-4.3.11.orig/ext/iconv/config.m4 2005-01-10 22:38:56.000000000 +0100
++++ php-4.3.11/ext/iconv/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -23,8 +23,14 @@
+ PHP_ICONV_PREFIX="$ICONV_DIR"
+ fi
+
++ for j in lib64 lib; do
++ if test -d $PHP_ICONV_PREFIX/$j; then
++ PHP_ICONV_PREFIX_LIBDIR=$PHP_ICONV_PREFIX/$j
++ fi
++ done
++
+ CFLAGS="-I$PHP_ICONV_PREFIX/include $CFLAGS"
+- LDFLAGS="-L$PHP_ICONV_PREFIX/lib $LDFLAGS"
++ LDFLAGS="-L$PHP_ICONV_PREFIX_LIBDIR $LDFLAGS"
+
+ if test -r $PHP_ICONV_PREFIX/include/giconv.h; then
+ PHP_ICONV_H_PATH="$PHP_ICONV_PREFIX/include/giconv.h"
+diff -Nru php-4.3.11.orig/ext/imap/config.m4 php-4.3.11/ext/imap/config.m4
+--- php-4.3.11.orig/ext/imap/config.m4 2005-01-11 05:56:57.000000000 +0100
++++ php-4.3.11/ext/imap/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -167,6 +167,7 @@
+ for lib in c-client4 c-client imap; do
+ IMAP_LIB=$lib
+ IMAP_LIB_CHK(lib)
++ IMAP_LIB_CHK(lib64)
+ IMAP_LIB_CHK(c-client)
+ done
+
+diff -Nru php-4.3.11.orig/ext/interbase/config.m4 php-4.3.11/ext/interbase/config.m4
+--- php-4.3.11.orig/ext/interbase/config.m4 2003-04-25 10:59:00.000000000 +0200
++++ php-4.3.11/ext/interbase/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -9,10 +9,18 @@
+ if test "$PHP_INTERBASE" != "no"; then
+ if test "$PHP_INTERBASE" = "yes"; then
+ IBASE_INCDIR=/usr/interbase/include
+- IBASE_LIBDIR=/usr/interbase/lib
++ for j in lib64 lib; do
++ if test -d /usr/interbase/$j; then
++ IBASE_LIBDIR=/usr/interbase/$j
++ fi
++ done
+ else
+ IBASE_INCDIR=$PHP_INTERBASE/include
+- IBASE_LIBDIR=$PHP_INTERBASE/lib
++ for j in lib64 lib; do
++ if test -d $PHP_INTERBASE/$j; then
++ IBASE_LIBDIR=$PHP_INTERBASE/$j
++ fi
++ done
+ fi
+
+ PHP_CHECK_LIBRARY(gds, isc_detach_database,
+diff -Nru php-4.3.11.orig/ext/ldap/config.m4 php-4.3.11/ext/ldap/config.m4
+--- php-4.3.11.orig/ext/ldap/config.m4 2004-12-30 08:02:17.000000000 +0100
++++ php-4.3.11/ext/ldap/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -6,7 +6,8 @@
+ if test -f $1/include/ldap.h; then
+ LDAP_DIR=$1
+ LDAP_INCDIR=$1/include
+- LDAP_LIBDIR=$1/lib
++ test -f $1/lib/libldap.so && LDAP_LIBDIR=$1/lib
++ test -f $1/lib64/libldap.so && LDAP_LIBDIR=$1/lib64
+ elif test -f $1/include/umich-ldap/ldap.h; then
+ LDAP_DIR=$1
+ LDAP_INCDIR=$1/include/umich-ldap
+diff -Nru php-4.3.11.orig/ext/mbstring/config.m4 php-4.3.11/ext/mbstring/config.m4
+--- php-4.3.11.orig/ext/mbstring/config.m4 2005-02-21 08:10:13.000000000 +0100
++++ php-4.3.11/ext/mbstring/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -167,12 +167,18 @@
+ PHP_ADD_INCLUDE([$PHP_LIBMBFL_INCLUDE])
+ fi
+
++ for j in lib64 lib; do
++ if test -d $PHP_LIBMBFL/$j; then
++ PHP_LIBMBFL_LIBDIR=$PHP_LIBMBFL/$j
++ fi
++ done
++
+ PHP_CHECK_LIBRARY(mbfl, mbfl_buffer_converter_new, [
+- PHP_ADD_LIBRARY_WITH_PATH(mbfl, $PHP_LIBMBFL/lib, MBSTRING_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(mbfl, $PHP_LIBMBFL_LIBDIR, MBSTRING_SHARED_LIBADD)
+ ],[
+ AC_MSG_ERROR([Problem with libmbfl. Please check config.log for more information.])
+ ], [
+- -LPHP_LIBMBFL/lib
++ -L$PHP_LIBMBFL_LIBDIR
+ ])
+ fi
+ ])
+diff -Nru php-4.3.11.orig/ext/mcal/config.m4 php-4.3.11/ext/mcal/config.m4
+--- php-4.3.11.orig/ext/mcal/config.m4 2002-03-27 11:26:16.000000000 +0100
++++ php-4.3.11/ext/mcal/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -19,7 +19,7 @@
+ fi
+ done
+
+- for i in $MCAL_DIR $MCAL_DIR/mcal $MCAL_DIR/mcal/lib $MCAL_DIR/lib/mcal $MCAL_DIR/lib; do
++ for i in $MCAL_DIR $MCAL_DIR/mcal $MCAL_DIR/mcal/lib $MCAL_DIR/lib/mcal $MCAL_DIR/lib64/mcal $MCAL_DIR/lib $MCAL_DIR/lib64; do
+ if test -r "$i/libmcal.a"; then
+ MCAL_LIBRARY=$i
+ fi
+diff -Nru php-4.3.11.orig/ext/mcrypt/config.m4 php-4.3.11/ext/mcrypt/config.m4
+--- php-4.3.11.orig/ext/mcrypt/config.m4 2005-01-22 02:37:12.000000000 +0100
++++ php-4.3.11/ext/mcrypt/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -14,6 +14,12 @@
+ AC_MSG_ERROR(mcrypt.h not found. Please reinstall libmcrypt.)
+ fi
+
++ for j in lib64 lib; do
++ if test -d $MCRYPT_DIR/$j; then
++ MCRYPT_LIBDIR=$MCRYPT_DIR/$j
++ fi
++ done
++
+ PHP_CHECK_LIBRARY(mcrypt, mcrypt_module_open,
+ [
+ PHP_ADD_LIBRARY(ltdl,, MCRYPT_SHARED_LIBADD)
+@@ -23,7 +29,7 @@
+ [
+ AC_DEFINE(HAVE_MCRYPT_GENERIC_DEINIT,1,[ ])
+ ],[],[
+- -L$MCRYPT_DIR/lib -lltdl
++ -L$MCRYPT_LIBDIR -lltdl
+ ])
+
+ ],[
+@@ -35,7 +41,7 @@
+ [
+ AC_DEFINE(HAVE_MCRYPT_GENERIC_DEINIT,1,[ ])
+ ],[],[
+- -L$MCRYPT_DIR/lib
++ -L$MCRYPT_LIBDIR
+ ])
+ ],[
+ PHP_CHECK_LIBRARY(mcrypt, init_mcrypt,
+@@ -44,16 +50,16 @@
+ ],[
+ AC_MSG_ERROR([Sorry, I was not able to diagnose which libmcrypt version you have installed.])
+ ],[
+- -L$MCRYPT_DIR/lib
++ -L$MCRYPT_LIBDIR
+ ])
+ ],[
+- -L$MCRYPT_DIR/lib
++ -L$MCRYPT_LIBDIR
+ ])
+ ],[
+- -L$MCRYPT_DIR/lib -lltdl
++ -L$MCRYPT_LIBDIR -lltdl
+ ])
+
+- PHP_ADD_LIBRARY_WITH_PATH(mcrypt, $MCRYPT_DIR/lib, MCRYPT_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(mcrypt, $MCRYPT_LIBDIR, MCRYPT_SHARED_LIBADD)
+ PHP_ADD_INCLUDE($MCRYPT_DIR/include)
+
+ PHP_NEW_EXTENSION(mcrypt, mcrypt.c, $ext_shared)
+diff -Nru php-4.3.11.orig/ext/mcve/config.m4 php-4.3.11/ext/mcve/config.m4
+--- php-4.3.11.orig/ext/mcve/config.m4 2004-12-08 07:48:11.000000000 +0100
++++ php-4.3.11/ext/mcve/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -67,8 +67,14 @@
+
+ CPPFLAGS=$saved_CPPFLAGS
+
++ for j in lib64 lib; do
++ if test -d $MCVE_DIR/$j; then
++ MCVE_LIBDIR=$MCVE_DIR/$j
++ fi
++ done
++
+ PHP_ADD_INCLUDE($MCVE_DIR/include)
+- PHP_ADD_LIBRARY_WITH_PATH(mcve, $MCVE_DIR/lib, MCVE_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(mcve, $MCVE_LIBDIR, MCVE_SHARED_LIBADD)
+
+ dnl Build test. Check for libmcve or libmonetra
+ dnl libmonetra_compat.h handle's MCVE_ -> M_ conversion
+diff -Nru php-4.3.11.orig/ext/mhash/config.m4 php-4.3.11/ext/mhash/config.m4
+--- php-4.3.11.orig/ext/mhash/config.m4 2003-10-01 04:54:01.000000000 +0200
++++ php-4.3.11/ext/mhash/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -14,8 +14,14 @@
+ AC_MSG_ERROR(Please reinstall libmhash - I cannot find mhash.h)
+ fi
+
++ for j in lib64 lib; do
++ if test -d $MHASH_DIR/$j; then
++ MHASH_LIBDIR=$MHASH_DIR/$j
++ fi
++ done
++
+ PHP_ADD_INCLUDE($MHASH_DIR/include)
+- PHP_ADD_LIBRARY_WITH_PATH(mhash, $MHASH_DIR/lib, MHASH_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(mhash, $MHASH_LIBDIR, MHASH_SHARED_LIBADD)
+
+ PHP_NEW_EXTENSION(mhash, mhash.c, $ext_shared)
+ PHP_SUBST(MHASH_SHARED_LIBADD)
+diff -Nru php-4.3.11.orig/ext/ming/config.m4 php-4.3.11/ext/ming/config.m4
+--- php-4.3.11.orig/ext/ming/config.m4 2003-07-11 09:48:33.000000000 +0200
++++ php-4.3.11/ext/ming/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -8,10 +8,12 @@
+ if test "$PHP_MING" != "no"; then
+ AC_CHECK_LIB(m, sin)
+
+- for i in $PHP_MING /usr/local /usr; do
+- if test -f $i/lib/libming.$SHLIB_SUFFIX_NAME -o -f $i/lib/libming.a; then
++ for j in lib64 lib; do
++ for i in $PHP_MING /usr/local /usr; do
++ if test -f $i/$j/libming.$SHLIB_SUFFIX_NAME -o -f $i/$j/libming.a; then
+ MING_DIR=$i
+- fi
++ fi
++ done
+ done
+
+ if test -z "$MING_DIR"; then
+@@ -28,16 +30,22 @@
+ AC_MSG_ERROR(Please reinstall ming distribution. ming.h not found.)
+ fi
+
++ for j in lib64 lib; do
++ if test -d $MING_DIR/$j; then
++ MING_LIBDIR=$MING_DIR/$j
++ fi
++ done
++
+ PHP_CHECK_LIBRARY(ming, Ming_useSWFVersion, [
+ AC_DEFINE(HAVE_MING,1,[ ])
+ ],[
+ AC_MSG_ERROR([Ming library 0.2a or greater required.])
+ ],[
+- -L$MING_DIR/lib
++ -L$MING_LIBDIR
+ ])
+
+ PHP_ADD_INCLUDE($MING_INC_DIR)
+- PHP_ADD_LIBRARY_WITH_PATH(ming, $MING_DIR/lib, MING_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(ming, $MING_LIBDIR, MING_SHARED_LIBADD)
+
+ AC_MSG_CHECKING([for destroySWFBlock])
+ AC_TRY_RUN([
+diff -Nru php-4.3.11.orig/ext/msession/config.m4 php-4.3.11/ext/msession/config.m4
+--- php-4.3.11.orig/ext/msession/config.m4 2002-03-12 17:25:11.000000000 +0100
++++ php-4.3.11/ext/msession/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -8,13 +8,17 @@
+ if test "$PHP_MSESSION" != "no"; then
+ if test -r $PHP_MSESSION/lib/libphoenix.a; then
+ PHOENIX_DIR=$PHP_MSESSION
++ PHOENIX_LIBDIR=$PHP_MSESSION/lib
+ else
+ AC_MSG_CHECKING(for msession in default path)
+- for i in /usr/local/phoenix /usr/local /usr; do
+- if test -r $i/lib/libphoenix.a; then
+- PHOENIX_DIR=$i
+- AC_MSG_RESULT(found in $i)
+- fi
++ for j in lib64 lib; do
++ for i in /usr/local/phoenix /usr/local /usr; do
++ if test -r $i/$j/libphoenix.a; then
++ PHOENIX_DIR=$i
++ PHOENIX_LIBDIR=$i/$j
++ AC_MSG_RESULT(found in $i)
++ fi
++ done
+ done
+ fi
+
+@@ -25,7 +29,7 @@
+
+
+ AC_DEFINE(HAVE_MSESSION, 1, [ ])
+- PHP_ADD_LIBRARY_WITH_PATH(phoenix, "$PHOENIX_DIR/lib", PHOENIX_LIB)
++ PHP_ADD_LIBRARY_WITH_PATH(phoenix, "$PHOENIX_LIBDIR", PHOENIX_LIB)
+ PHOENIX_INCLUDE="-I$PHOENIX_DIR"
+ PHP_SUBST(PHOENIX_LIB)
+
+diff -Nru php-4.3.11.orig/ext/mssql/config.m4 php-4.3.11/ext/mssql/config.m4
+--- php-4.3.11.orig/ext/mssql/config.m4 2004-12-08 19:59:11.000000000 +0100
++++ php-4.3.11/ext/mssql/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -19,6 +19,12 @@
+ fi
+ done
+
++ for j in lib64 lib; do
++ if test -d $FREETDS_INSTALLATION_DIR/$j; then
++ FREETDS_INSTALLATION_DIR_LIBDIR=$FREETDS_INSTALLATION_DIR/$j
++ fi
++ done
++
+ if test -z "$FREETDS_INSTALLATION_DIR"; then
+ AC_MSG_ERROR(Cannot find FreeTDS in known installation directories)
+ fi
+@@ -32,12 +38,12 @@
+ fi
+ fi
+
+- if test ! -r "$FREETDS_INSTALLATION_DIR/lib/libtds.a" && test ! -r "$FREETDS_INSTALLATION_DIR/lib/libtds.so"; then
+- AC_MSG_ERROR(Could not find $FREETDS_INSTALLATION_DIR/lib/libtds.[a|so])
++ if test ! -r "$FREETDS_INSTALLATION_DIR_LIBDIR/libtds.a" && test ! -r "$FREETDS_INSTALLATION_DIR_LIBDIR/libtds.so"; then
++ AC_MSG_ERROR(Could not find $FREETDS_INSTALLATION_DIR_LIBDIR/libtds.[a|so])
+ fi
+
+ MSSQL_INCDIR=$FREETDS_INSTALLATION_DIR/include
+- MSSQL_LIBDIR=$FREETDS_INSTALLATION_DIR/lib
++ MSSQL_LIBDIR=$FREETDS_INSTALLATION_DIR_LIBDIR
+
+ PHP_ADD_INCLUDE($MSSQL_INCDIR)
+ PHP_ADD_LIBRARY_WITH_PATH(sybdb, $MSSQL_LIBDIR, MSSQL_SHARED_LIBADD)
+diff -Nru php-4.3.11.orig/ext/mysql/config.m4 php-4.3.11/ext/mysql/config.m4
+--- php-4.3.11.orig/ext/mysql/config.m4 2004-12-30 08:02:17.000000000 +0100
++++ php-4.3.11/ext/mysql/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -114,7 +114,7 @@
+
+ MYSQL_MODULE_TYPE=external
+
+- for i in lib lib/mysql; do
++ for i in lib64 lib64/mysql lib lib/mysql; do
+ MYSQL_LIB_CHK($i)
+ done
+
+@@ -125,13 +125,18 @@
+ PHP_CHECK_LIBRARY(mysqlclient, mysql_close, [ ],
+ [
+ if test "$PHP_ZLIB_DIR" != "no"; then
++ for j in lib64 lib; do
++ if test -d $PHP_ZLIB_DIR/$j; then
++ PHP_ZLIB_LIBDIR=$PHP_ZLIB_DIR/$j
++ fi
++ done
+ PHP_ADD_LIBRARY_WITH_PATH(z, $PHP_ZLIB_DIR, MYSQL_SHARED_LIBADD)
+ PHP_CHECK_LIBRARY(mysqlclient, mysql_error, [], [
+ AC_MSG_ERROR([mysql configure failed. Please check config.log for more information.])
+ ], [
+- -L$PHP_ZLIB_DIR/lib -L$MYSQL_LIB_DIR
++ -L$PHP_ZLIB_LIBDIR -L$MYSQL_LIB_DIR
+ ])
+- MYSQL_LIBS="-L$PHP_ZLIB_DIR/lib -lz"
++ MYSQL_LIBS="-L$PHP_ZLIB_LIBDIR -lz"
+ else
+ PHP_ADD_LIBRARY(z,, MYSQL_SHARED_LIBADD)
+ PHP_CHECK_LIBRARY(mysqlclient, mysql_errno, [], [
+diff -Nru php-4.3.11.orig/ext/ncurses/config.m4 php-4.3.11/ext/ncurses/config.m4
+--- php-4.3.11.orig/ext/ncurses/config.m4 2003-12-09 21:33:22.000000000 +0100
++++ php-4.3.11/ext/ncurses/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -38,20 +38,26 @@
+ LIBNAME=ncurses
+ LIBSYMBOL=initscr
+
++ for j in lib64 lib; do
++ if test -d $NCURSES_DIR/$j; then
++ NCURSES_LIBDIR=$NCURSES_DIR/$j
++ fi
++ done
++
+ PHP_CHECK_LIBRARY($LIBNAME, $LIBSYMBOL, [
+ AC_DEFINE(HAVE_NCURSESLIB,1,[ ])
+- PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $NCURSES_DIR/lib, NCURSES_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $NCURSES_LIBDIR, NCURSES_SHARED_LIBADD)
+
+ PHP_CHECK_LIBRARY(panel, new_panel, [
+ AC_DEFINE(HAVE_NCURSES_PANEL,1,[ ])
+- PHP_ADD_LIBRARY_WITH_PATH(panel, $NCURSES_DIR/lib, NCURSES_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(panel, $NCURSES_LIBDIR, NCURSES_SHARED_LIBADD)
+ ], [], [
+- -L$NCURSES_DIR/lib -l$LIBNAME -lm
++ -L$NCURSES_LIBDIR -l$LIBNAME -lm
+ ])
+ ], [
+ AC_MSG_ERROR(Wrong ncurses lib version or lib not found)
+ ], [
+- -L$NCURSES_DIR/lib -lm
++ -L$NCURSES_LIBDIR -lm
+ ])
+
+ AC_CHECK_LIB($LIBNAME, color_set, [AC_DEFINE(HAVE_NCURSES_COLOR_SET, 1, [ ])])
+diff -Nru php-4.3.11.orig/ext/odbc/config.m4 php-4.3.11/ext/odbc/config.m4
+--- php-4.3.11.orig/ext/odbc/config.m4 2005-01-18 22:21:16.000000000 +0100
++++ php-4.3.11/ext/odbc/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -47,19 +47,8 @@
+ #
+ # Check for the library files, and setup the ODBC_LIBS path...
+ #
+-if test ! -f $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.so -a \
+- ! -f $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.a; then
+- #
+- # we have an error and should bail out, as we can't find the libs!
+- #
+- echo ""
+- echo "*********************************************************************"
+- echo "* Unable to locate $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.so or $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.a"
+- echo "* Please correct this by creating the following links and reconfiguring:"
+- echo "* $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.a -> $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.a"
+- echo "* $1/${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.so -> $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.so"
+- echo "*********************************************************************"
+-else
++if test -f $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.so -a \
++ -f $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.a; then
+ ODBC_LFLAGS=-L$1
+ ODBC_LIBS=-l${ac_solid_prefix}${ac_solid_os}${ac_solid_version}
+ fi
+@@ -100,8 +89,12 @@
+ withval=/usr/local
+ fi
+ if test "$withval" != "no"; then
++ for i in lib64 lib; do
++ ADABAS_LIBDIR=$withval/$i
++ test -f "$ADABAS_LIBDIR/odbclib.a" && break
++ done
+ PHP_ADD_INCLUDE($withval/incl)
+- PHP_ADD_LIBPATH($withval/lib)
++ PHP_ADD_LIBPATH($ADABAS_LIBDIR)
+ ODBC_OBJS="$withval/lib/odbclib.a"
+ ODBC_LIB="$abs_builddir/ext/odbc/libodbc_adabas.a"
+ $srcdir/build/shtool mkdir -f -p ext/odbc
+@@ -132,8 +125,12 @@
+ withval=/usr/local
+ fi
+ if test "$withval" != "no"; then
++ for i in lib64 lib; do
++ SAPDB_LIBDIR=$withval/$i
++ test -f "$SAPDB_LIBDIR/libsqlod.a" -o -f "$SAPDB_LIBDIR/libsqlod.$SHLIB_SUFFIX_NAME" && break
++ done
+ PHP_ADD_INCLUDE($withval/incl)
+- PHP_ADD_LIBPATH($withval/lib)
++ PHP_ADD_LIBPATH($SAPDB_LIBDIR)
+ PHP_ADD_LIBRARY(sqlod)
+ ODBC_TYPE=sapdb
+ AC_DEFINE(HAVE_SAPDB,1,[ ])
+@@ -158,19 +155,36 @@
+ withval=/usr/local/solid
+ fi
+ if test "$withval" != "no"; then
+- ODBC_INCDIR=$withval/include
+- ODBC_LIBDIR=$withval/lib
+- ODBC_INCLUDE=-I$ODBC_INCDIR
+- ODBC_TYPE=solid
+- if test -f $ODBC_LIBDIR/soc*35.a; then
+- AC_DEFINE(HAVE_SOLID_35,1,[ ])
+- elif test -f $ODBC_LIBDIR/scl*30.a; then
+- AC_DEFINE(HAVE_SOLID_30,1,[ ])
+- elif test -f $ODBC_LIBDIR/scl*23.a; then
+- AC_DEFINE(HAVE_SOLID,1,[ ])
++ for i in lib64 lib; do
++ SOLID_LIBDIR=$withval/$i
++ ODBC_INCDIR=$withval/include
++ ODBC_LIBDIR=$withval/$j
++ ODBC_INCLUDE=-I$ODBC_INCDIR
++ ODBC_TYPE=solid
++ if test -f $ODBC_LIBDIR/soc*35.a; then
++ AC_DEFINE(HAVE_SOLID_35,1,[ ])
++ elif test -f $ODBC_LIBDIR/scl*30.a; then
++ AC_DEFINE(HAVE_SOLID_30,1,[ ])
++ elif test -f $ODBC_LIBDIR/scl*23.a; then
++ AC_DEFINE(HAVE_SOLID,1,[ ])
++ fi
++ AC_MSG_RESULT(yes)
++ ODBC_LIBS=
++ AC_FIND_SOLID_LIBS($ODBC_LIBDIR)
++ test -n "$ODBC_LIBS" && break
++ done
++ if test -z "$ODBC_LIBS"; then
++ #
++ # we have an error and should bail out, as we can't find the libs!
++ #
++ echo ""
++ echo "*********************************************************************"
++ echo "* Unable to locate ODBC_LIBDIR/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.so or ODBC_LIBDIR/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.a"
++ echo "* Please correct this by creating the following links and reconfiguring:"
++ echo "* ODBC_LIBDIR/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.a -> ODBC_LIBDIR/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.a"
++ echo "* ODBC_LIBDIR/${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.so -> ODBC_LIBDIR/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.so"
++ echo "*********************************************************************"
+ fi
+- AC_MSG_RESULT(yes)
+- AC_FIND_SOLID_LIBS($ODBC_LIBDIR)
+ else
+ AC_MSG_RESULT(no)
+ fi
+@@ -375,11 +389,15 @@
+ withval=/usr/local
+ fi
+ if test "$withval" != "no"; then
+- PHP_ADD_LIBRARY_WITH_PATH(iodbc, $withval/lib)
++ for i in lib64 lib; do
++ IODBC_LIBDIR=$withval/$i
++ test -f "$IODBC_LIBDIR/libiodbc.a" -o -f "$IODBC_LIBDIR/libiodbc.$SHLIB_SUFFIX_NAME" && break
++ done
++ PHP_ADD_LIBRARY_WITH_PATH(iodbc, $IODBC_LIBDIR)
+ PHP_ADD_INCLUDE($withval/include, 1)
+ ODBC_TYPE=iodbc
+ ODBC_INCLUDE=-I$withval/include
+- ODBC_LFLAGS=-L$withval/lib
++ ODBC_LFLAGS=-L$IODBC_LIBDIR
+ ODBC_LIBS=-liodbc
+ AC_DEFINE(HAVE_IODBC,1,[ ])
+ AC_DEFINE(HAVE_ODBC2,1,[ ])
+@@ -404,8 +422,11 @@
+ withval=/usr/local/easysoft/oob/client
+ fi
+ if test "$withval" != "no"; then
++ for i in lib64 lib; do
++ ODBC_LIBDIR=$withval/$i
++ test -f "$ODBC_LIBDIR/libesoobclient.a" -o -f "$ODBC_LIBDIR/libesoobclient.$SHLIB_SUFFIX_NAME" && break
++ done
+ ODBC_INCDIR=$withval/include
+- ODBC_LIBDIR=$withval/lib
+ ODBC_LFLAGS=-L$ODBC_LIBDIR
+ ODBC_INCLUDE=-I$ODBC_INCDIR
+ ODBC_LIBS=-lesoobclient
+@@ -431,8 +452,11 @@
+ withval=/usr/local
+ fi
+ if test "$withval" != "no"; then
++ for i in lib64 lib; do
++ ODBC_LIBDIR=$withval/$i
++ test -f "$ODBC_LIBDIR/libodbc.a" -o -f "$ODBC_LIBDIR/libodbc.$SHLIB_SUFFIX_NAME" && break
++ done
+ ODBC_INCDIR=$withval/include
+- ODBC_LIBDIR=$withval/lib
+ ODBC_LFLAGS=-L$ODBC_LIBDIR
+ ODBC_INCLUDE=-I$ODBC_INCDIR
+ ODBC_LIBS=-lodbc
+diff -Nru php-4.3.11.orig/ext/pcre/config.m4 php-4.3.11/ext/pcre/config.m4
+--- php-4.3.11.orig/ext/pcre/config.m4 2003-12-16 23:14:55.000000000 +0100
++++ php-4.3.11/ext/pcre/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -25,7 +25,7 @@
+ AC_MSG_ERROR([Could not find pcre.h in $PHP_PCRE_REGEX])
+ fi
+
+- for j in $PHP_PCRE_REGEX $PHP_PCRE_REGEX/lib; do
++ for j in $PHP_PCRE_REGEX $PHP_PCRE_REGEX/lib64 $PHP_PCRE_REGEX/lib; do
+ test -f $j/libpcre.a -o -f $j/libpcre.$SHLIB_SUFFIX_NAME && PCRE_LIBDIR=$j
+ done
+
+diff -Nru php-4.3.11.orig/ext/pgsql/config.m4 php-4.3.11/ext/pgsql/config.m4
+--- php-4.3.11.orig/ext/pgsql/config.m4 2004-12-30 08:02:18.000000000 +0100
++++ php-4.3.11/ext/pgsql/config.m4 2005-12-01 09:14:33.000000000 +0100
+@@ -26,7 +26,7 @@
+ fi
+ done
+
+- for j in lib lib/pgsql lib/postgres lib/postgresql ""; do
++ for j in lib64 lib lib64/pgsql lib/pgsql lib64/postgres lib/postgres lib64/postgresql lib/postgresql ""; do
+ if test -f "$i/$j/libpq.so" || test -f "$i/$j/libpq.a"; then
+ PGSQL_LIBDIR=$i/$j
+ fi
+diff -Nru php-4.3.11.orig/ext/pspell/config.m4 php-4.3.11/ext/pspell/config.m4
+--- php-4.3.11.orig/ext/pspell/config.m4 2005-02-17 04:51:50.000000000 +0100
++++ php-4.3.11/ext/pspell/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -27,7 +27,11 @@
+ AC_MSG_ERROR(Cannot find pspell)
+ fi
+
+- PSPELL_LIBDIR=$PSPELL_DIR/lib
++ for j in lib64 lib; do
++ if test -d $PSPELL_DIR/$j; then
++ PSPELL_LIBDIR=$PSPELL_DIR/$j
++ fi
++ done
+
+ PHP_ADD_LIBRARY_WITH_PATH(pspell, $PSPELL_LIBDIR, PSPELL_SHARED_LIBADD)
+
+diff -Nru php-4.3.11.orig/ext/readline/config.m4 php-4.3.11/ext/readline/config.m4
+--- php-4.3.11.orig/ext/readline/config.m4 2003-10-01 04:54:04.000000000 +0200
++++ php-4.3.11/ext/readline/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -29,22 +29,28 @@
+ ])
+ ])
+
++ for j in lib64 lib; do
++ if test -d $READLINE_DIR/$j; then
++ READLINE_LIBDIR=$READLINE_DIR/$j
++ fi
++ done
++
+ PHP_CHECK_LIBRARY(readline, readline,
+ [
+- PHP_ADD_LIBRARY_WITH_PATH(readline, $READLINE_DIR/lib, READLINE_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(readline, $READLINE_LIBDIR, READLINE_SHARED_LIBADD)
+ ], [
+ AC_MSG_ERROR(readline library not found)
+ ], [
+- -L$READLINE_DIR/lib
++ -L$READLINE_LIBDIR
+ ])
+
+ PHP_CHECK_LIBRARY(history, add_history,
+ [
+- PHP_ADD_LIBRARY_WITH_PATH(history, $READLINE_DIR/lib, READLINE_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(history, $READLINE_LIBDIR, READLINE_SHARED_LIBADD)
+ ], [
+ AC_MSG_ERROR(history library required by readline not found)
+ ], [
+- -L$READLINE_DIR/lib
++ -L$READLINE_LIBDIR
+ ])
+
+ PHP_NEW_EXTENSION(readline, readline.c, $ext_shared, cli)
+@@ -73,13 +79,19 @@
+ ])
+ ])
+
++ for j in lib64 lib; do
++ if test -d $LIBEDIT_DIR/$j; then
++ LIBEDIT_LIBDIR=$LIBEDIT_DIR/$j
++ fi
++ done
++
+ PHP_CHECK_LIBRARY(edit, readline,
+ [
+- PHP_ADD_LIBRARY_WITH_PATH(edit, $LIBEDIT_DIR/lib, READLINE_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(edit, $LIBEDIT_LIBDIR, READLINE_SHARED_LIBADD)
+ ], [
+ AC_MSG_ERROR(edit library required by readline not found)
+ ], [
+- -L$READLINE_DIR/lib
++ -L$READLINE_LIBDIR
+ ])
+
+ PHP_NEW_EXTENSION(readline, readline.c, $ext_shared, cli)
+diff -Nru php-4.3.11.orig/ext/session/config.m4 php-4.3.11/ext/session/config.m4
+--- php-4.3.11.orig/ext/session/config.m4 2003-10-01 04:54:06.000000000 +0200
++++ php-4.3.11/ext/session/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -24,8 +24,14 @@
+ if test -z "$MM_DIR" ; then
+ AC_MSG_ERROR(cannot find mm library)
+ fi
+-
+- PHP_ADD_LIBRARY_WITH_PATH(mm, $MM_DIR/lib, SESSION_SHARED_LIBADD)
++
++ for j in lib64 lib; do
++ if test -d $MM_DIR/$j; then
++ MM_LIBDIR=$MM_DIR/$j
++ fi
++ done
++
++ PHP_ADD_LIBRARY_WITH_PATH(mm, $MM_LIBDIR, SESSION_SHARED_LIBADD)
+ PHP_ADD_INCLUDE($MM_DIR/include)
+ AC_DEFINE(HAVE_LIBMM, 1, [Whether you have libmm])
+ fi
+diff -Nru php-4.3.11.orig/ext/snmp/config.m4 php-4.3.11/ext/snmp/config.m4
+--- php-4.3.11.orig/ext/snmp/config.m4 2003-09-23 10:16:47.000000000 +0200
++++ php-4.3.11/ext/snmp/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -45,8 +45,8 @@
+ test -f $i/snmp/snmp.h && SNMP_INCDIR=$i/snmp
+ test -f $i/snmp/include/ucd-snmp/snmp.h && SNMP_INCDIR=$i/snmp/include/ucd-snmp
+ done
+- for i in /usr /usr/snmp /usr/local /usr/local/snmp; do
+- test -f $i/lib/libsnmp.a -o -f $i/lib/libsnmp.$SHLIB_SUFFIX_NAME && SNMP_LIBDIR=$i/lib
++ for i in /usr/lib /usr/lib64 /usr/snmp/lib /usr/local/lib /usr/local/snmp/lib; do
++ test -f $i/libsnmp.a -o -f $i/libsnmp.$SHLIB_SUFFIX_NAME && SNMP_LIBDIR=$i
+ done
+ else
+ SNMP_INCDIR=$PHP_SNMP/include
+diff -Nru php-4.3.11.orig/ext/xml/config.m4 php-4.3.11/ext/xml/config.m4
+--- php-4.3.11.orig/ext/xml/config.m4 2004-12-20 21:38:18.000000000 +0100
++++ php-4.3.11/ext/xml/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -33,6 +33,10 @@
+ for i in $PHP_XML $PHP_EXPAT_DIR; do
+ if test -f $i/lib/libexpat.a -o -f $i/lib/libexpat.$SHLIB_SUFFIX_NAME ; then
+ EXPAT_DIR=$i
++ EXPAT_LIBDIR=$i/lib
++ elif test -f $i/lib64/libexpat.a -o -f $i/lib64/libexpat.$SHLIB_SUFFIX_NAME ; then
++ EXPAT_DIR=$i
++ EXPAT_LIBDIR=$i/lib64
+ fi
+ done
+
+@@ -41,7 +45,7 @@
+ fi
+
+ PHP_ADD_INCLUDE($EXPAT_DIR/include)
+- PHP_ADD_LIBRARY_WITH_PATH(expat, $EXPAT_DIR/lib, XML_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(expat, $EXPAT_LIBDIR, XML_SHARED_LIBADD)
+ PHP_SUBST(XML_SHARED_LIBADD)
+ fi
+ fi
+diff -Nru php-4.3.11.orig/ext/xmlrpc/config.m4 php-4.3.11/ext/xmlrpc/config.m4
+--- php-4.3.11.orig/ext/xmlrpc/config.m4 2003-10-03 07:25:43.000000000 +0200
++++ php-4.3.11/ext/xmlrpc/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -29,6 +29,12 @@
+ PHP_ADD_INCLUDE($i/include)
+ testval=yes
+ break
++ elif test -f $i/lib64/libexpat.a -o -f $i/lib64/libexpat.$SHLIB_SUFFIX_NAME; then
++ AC_DEFINE(HAVE_LIBEXPAT2,1,[ ])
++ PHP_ADD_LIBRARY_WITH_PATH(expat, $i/lib64, XMLRPC_SHARED_LIBADD)
++ PHP_ADD_INCLUDE($i/include)
++ testval=yes
++ break
+ fi
+ done
+
+@@ -87,6 +93,12 @@
+ AC_MSG_ERROR(Please reinstall the XMLRPC-EPI distribution)
+ fi
+
++ for j in lib64 lib; do
++ if test -d $XMLRPC_DIR/$j; then
++ XMLRPC_LIBDIR=$XMLRPC_DIR/$j
++ fi
++ done
++
+ PHP_ADD_INCLUDE($XMLRPC_DIR)
+- PHP_ADD_LIBRARY_WITH_PATH(xmlrpc, $XMLRPC_DIR/lib, XMLRPC_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH(xmlrpc, $XMLRPC_LIBDIR, XMLRPC_SHARED_LIBADD)
+ fi
+diff -Nru php-4.3.11.orig/ext/xslt/config.m4 php-4.3.11/ext/xslt/config.m4
+--- php-4.3.11.orig/ext/xslt/config.m4 2004-08-18 07:14:16.000000000 +0200
++++ php-4.3.11/ext/xslt/config.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -104,6 +104,12 @@
+ PHP_ADD_LIBRARY_WITH_PATH(expat, $i/lib, XSLT_SHARED_LIBADD)
+ found_expat=yes
+ break
++ elif test -f $i/lib64/libexpat.a -o -f $i/lib64/libexpat.$SHLIB_SUFFIX_NAME; then
++ AC_DEFINE(HAVE_LIBEXPAT2, 1, [ ])
++ PHP_ADD_INCLUDE($i/include)
++ PHP_ADD_LIBRARY_WITH_PATH(expat, $i/lib64, XSLT_SHARED_LIBADD)
++ found_expat=yes
++ break
+ fi
+ done
+
+@@ -124,29 +130,38 @@
+ ])
+
+ if test "$PHP_SABLOT_JS" != "no"; then
+- for i in $PHP_SABLOT_JS /usr/local /usr; do
+- if test -f $i/lib/libjs.a -o -f $i/lib/libjs.$SHLIB_SUFFIX_NAME; then
+- PHP_SABLOT_JS_DIR=$i
+- break
+- fi
++ for j in lib64 lib; do
++ for i in $PHP_SABLOT_JS /usr/local /usr; do
++ if test -f $i/$j/libjs.a -o -f $i/$j/libjs.$SHLIB_SUFFIX_NAME; then
++ PHP_SABLOT_JS_DIR=$i
++ PHP_SABLOT_JS_LIBDIR=$i/$j
++ break
++ fi
++ done
+ done
+
+ PHP_CHECK_LIBRARY(js, JS_GetRuntime,
+ [
+- PHP_ADD_LIBRARY_WITH_PATH(js, $PHP_SABLOT_JS_DIR/lib, XSLT_SHARED_LIBADD)
+- PHP_SABLOT_JS_LIBS="-L$PHP_SABLOT_JS_DIR/lib -ljs"
++ PHP_ADD_LIBRARY_WITH_PATH(js, $PHP_SABLOT_JS_LIBDIR, XSLT_SHARED_LIBADD)
++ PHP_SABLOT_JS_LIBS="-L$PHP_SABLOT_JS_LIBDIR -ljs"
+ ], [
+ AC_MSG_ERROR([libjs not found. Please check config.log for more information.])
+ ], [
+- -L$PHP_SABLOT_JS_DIR/lib
++ -L$PHP_SABLOT_JS_LIBDIR
+ ])
+ fi
+
++ for j in lib64 lib; do
++ if test -d $XSLT_DIR/$j; then
++ XSLT_LIBDIR=$XSLT_DIR/$j
++ fi
++ done
++
+ PHP_CHECK_LIBRARY(sablot, SablotSetEncoding,
+ [
+ AC_DEFINE(HAVE_SABLOT_SET_ENCODING, 1, [ ])
+ ], [], [
+- -L$XSLT_DIR/lib $PHP_SABLOT_JS_LIBS
++ -L$XSLT_LIBDIR $PHP_SABLOT_JS_LIBS
+ ])
+
+ dnl SablotSetOptions implemented in Sablotron CVS > 2002/10/31
+@@ -154,14 +169,14 @@
+ [
+ AC_DEFINE(HAVE_SABLOT_GET_OPTIONS, 1, [Whether Sablotron supports SablotGetOptions])
+ ], [], [
+- -L$XSLT_DIR/lib $PHP_SABLOT_JS_LIBS
++ -L$XSLT_LIBDIR $PHP_SABLOT_JS_LIBS
+ ])
+
+ AC_DEFINE(HAVE_SABLOT_BACKEND, 1, [ ])
+ fi
+
+ PHP_ADD_INCLUDE($XSLT_DIR/include)
+- PHP_ADD_LIBRARY_WITH_PATH($XSLT_LIBNAME, $XSLT_DIR/lib, XSLT_SHARED_LIBADD)
++ PHP_ADD_LIBRARY_WITH_PATH($XSLT_LIBNAME, $XSLT_LIBDIR, XSLT_SHARED_LIBADD)
+
+ AC_DEFINE(HAVE_XSLT, 1, [ ])
+ fi
+diff -Nru php-4.3.11.orig/ext/zlib/config0.m4 php-4.3.11/ext/zlib/config0.m4
+--- php-4.3.11.orig/ext/zlib/config0.m4 2003-07-02 01:54:44.000000000 +0200
++++ php-4.3.11/ext/zlib/config0.m4 2005-12-01 08:54:41.000000000 +0100
+@@ -36,15 +36,21 @@
+ AC_MSG_ERROR(Cannot find libz)
+ fi
+
++ for j in lib64 lib; do
++ if test -d $ZLIB_DIR/$j; then
++ ZLIB_LIBDIR=$ZLIB_DIR/$j
++ fi
++ done
++
+ PHP_CHECK_LIBRARY(z, gzgets, [
+ AC_DEFINE(HAVE_ZLIB,1,[ ])
+ ],[
+ AC_MSG_ERROR(ZLIB extension requires zlib >= 1.0.9)
+ ],[
+- -L$ZLIB_DIR/lib
++ -L$ZLIB_LIBDIR
+ ])
+
+- PHP_ADD_LIBPATH($ZLIB_DIR/lib, ZLIB_SHARED_LIBADD)
++ PHP_ADD_LIBPATH($ZLIB_LIBDIR, ZLIB_SHARED_LIBADD)
+
+ PHP_ZLIB_DIR=$ZLIB_DIR
+ PHP_ADD_LIBRARY(z,, ZLIB_SHARED_LIBADD)
diff --git a/dev-lang/php/files/4.3.11/php4.3.11-pcre-security.patch b/dev-lang/php/files/4.3.11/php4.3.11-pcre-security.patch
new file mode 100644
index 0000000..3e44142
--- /dev/null
+++ b/dev-lang/php/files/4.3.11/php4.3.11-pcre-security.patch
@@ -0,0 +1,20 @@
+--- ext/pcre/config.m4 2003/12/16 22:14:55 1.29.2.5
++++ ext/pcre/config.m4 2005/08/09 17:41:56 1.29.2.7.2.1
+@@ -13,7 +13,7 @@ PHP_ARG_WITH(pcre-regex,for PCRE support
+
+ if test "$PHP_PCRE_REGEX" != "no"; then
+ if test "$PHP_PCRE_REGEX" = "yes"; then
+- PHP_NEW_EXTENSION(pcre, pcrelib/maketables.c pcrelib/get.c pcrelib/study.c pcrelib/pcre.c php_pcre.c, $ext_shared,,-DSUPPORT_UTF8 -DLINK_SIZE=2 -DPOSIX_MALLOC_THRESHOLD=10 -I@ext_srcdir@/pcrelib)
++ PHP_NEW_EXTENSION(pcre, pcrelib/pcre_chartables.c pcrelib/pcre_compile.c pcrelib/pcre_config.c pcrelib/pcre_dfa_exec.c pcrelib/pcre_exec.c pcrelib/pcre_fullinfo.c pcrelib/pcre_get.c pcrelib/pcre_globals.c pcrelib/pcre_info.c pcrelib/pcre_maketables.c pcrelib/pcre_ord2utf8.c pcrelib/pcre_printint.c pcrelib/pcre_refcount.c pcrelib/pcre_study.c pcrelib/pcre_tables.c pcrelib/pcre_try_flipped.c pcrelib/pcre_ucp_findchar.c pcrelib/pcre_valid_utf8.c pcrelib/pcre_version.c pcrelib/pcre_xclass.c php_pcre.c, $ext_shared,,-DEXPORT= -DNEWLINE=10 -DSUPPORT_UTF8 -DSUPPORT_UCP -DLINK_SIZE=2 -DPOSIX_MALLOC_THRESHOLD=10 -DMATCH_LIMIT=10000000 -I@ext_srcdir@/pcrelib)
+ PHP_ADD_BUILD_DIR($ext_builddir/pcrelib)
+ AC_DEFINE(HAVE_BUNDLED_PCRE, 1, [ ])
+ else
+@@ -50,7 +50,7 @@ if test "$PHP_PCRE_REGEX" != "no"; then
+
+ AC_DEFINE(HAVE_PCRE, 1, [ ])
+ PHP_ADD_INCLUDE($PCRE_INCDIR)
+- PHP_NEW_EXTENSION(pcre, php_pcre.c, $ext_shared,,-DSUPPORT_UTF8 -DLINK_SIZE=2 -DPOSIX_MALLOC_THRESHOLD=10)
++ PHP_NEW_EXTENSION(pcre, php_pcre.c, $ext_shared,,-DEXPORT= -DNEWLINE=10 -DSUPPORT_UTF8 -DSUPPORT_UCP -DLINK_SIZE=2 -DPOSIX_MALLOC_THRESHOLD=10 -DMATCH_LIMIT=10000000)
+ fi
+ PHP_SUBST(PCRE_SHARED_LIBADD)
+ fi
diff --git a/dev-lang/php/files/4.3.11/php4.3.11-phpinfo_xss.patch b/dev-lang/php/files/4.3.11/php4.3.11-phpinfo_xss.patch
new file mode 100644
index 0000000..2c7d999
--- /dev/null
+++ b/dev-lang/php/files/4.3.11/php4.3.11-phpinfo_xss.patch
@@ -0,0 +1,75 @@
+--- ext/standard/info.c 2004-06-09 17:10:19.000000000 +0200
++++ ext/standard/info.c 2005-11-01 01:22:42.000000000 +0100
+@@ -18,7 +18,7 @@
+ +----------------------------------------------------------------------+
+ */
+
+-/* $Id: info.c,v 1.218.2.16 2004/06/09 15:10:19 iliaa Exp $ */
++/* $Id: info.c,v 1.218.2.18.2.4 2005/08/16 00:26:02 iliaa Exp $ */
+
+ #include "php.h"
+ #include "php_ini.h"
+@@ -133,10 +133,21 @@
+ PUTS(" => ");
+ }
+ if (Z_TYPE_PP(tmp) == IS_ARRAY) {
++ zval *tmp3;
++ MAKE_STD_ZVAL(tmp3);
+ if (!sapi_module.phpinfo_as_text) {
+ PUTS("<pre>");
+ }
++ php_start_ob_buffer(NULL, 4096, 1 TSRMLS_CC);
+ zend_print_zval_r(*tmp, 0);
++ php_ob_get_buffer(tmp3 TSRMLS_CC);
++ php_end_ob_buffer(0, 0 TSRMLS_CC);
++
++ elem_esc = php_info_html_esc(Z_STRVAL_P(tmp3) TSRMLS_CC);
++ PUTS(elem_esc);
++ efree(elem_esc);
++ zval_ptr_dtor(&tmp3);
++
+ if (!sapi_module.phpinfo_as_text) {
+ PUTS("</pre>");
+ }
+@@ -196,7 +207,7 @@
+ PHPAPI char *php_info_html_esc(char *string TSRMLS_DC)
+ {
+ int new_len;
+- return php_escape_html_entities(string, strlen(string), &new_len, 0, ENT_NOQUOTES, NULL TSRMLS_CC);
++ return php_escape_html_entities(string, strlen(string), &new_len, 0, ENT_QUOTES, NULL TSRMLS_CC);
+ }
+ /* }}} */
+
+@@ -408,7 +419,9 @@
+ if (expose_php && !sapi_module.phpinfo_as_text) {
+ PUTS("<a href=\"http://www.php.net/\"><img border=\"0\" src=\"");
+ if (SG(request_info).request_uri) {
+- PUTS(SG(request_info).request_uri);
++ char *elem_esc = php_info_html_esc(SG(request_info).request_uri TSRMLS_CC);
++ PUTS(elem_esc);
++ efree(elem_esc);
+ }
+ if ((ta->tm_mon==3) && (ta->tm_mday==1)) {
+ PUTS("?="PHP_EGG_LOGO_GUID"\" alt=\"Nadia!\" /></a>");
+@@ -510,7 +529,9 @@
+ if (expose_php && !sapi_module.phpinfo_as_text) {
+ PUTS("<a href=\"http://www.zend.com/\"><img border=\"0\" src=\"");
+ if (SG(request_info).request_uri) {
+- PUTS(SG(request_info).request_uri);
++ char *elem_esc = php_info_html_esc(SG(request_info).request_uri TSRMLS_CC);
++ PUTS(elem_esc);
++ efree(elem_esc);
+ }
+ PUTS("?="ZEND_LOGO_GUID"\" alt=\"Zend logo\" /></a>\n");
+ }
+@@ -525,7 +546,9 @@
+ php_info_print_hr();
+ PUTS("<h1><a href=\"");
+ if (SG(request_info).request_uri) {
+- PUTS(SG(request_info).request_uri);
++ char *elem_esc = php_info_html_esc(SG(request_info).request_uri TSRMLS_CC);
++ PUTS(elem_esc);
++ efree(elem_esc);
+ }
+ PUTS("?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000\">");
+ PUTS("PHP Credits");
diff --git a/dev-lang/php/files/4.3.11/php4.3.11-pspell-ext-segf.patch b/dev-lang/php/files/4.3.11/php4.3.11-pspell-ext-segf.patch
new file mode 100644
index 0000000..a62c42f
--- /dev/null
+++ b/dev-lang/php/files/4.3.11/php4.3.11-pspell-ext-segf.patch
@@ -0,0 +1,317 @@
+--- ext/pspell/pspell.c 2003-08-28 22:01:29.000000000 +0200
++++ ext/pspell/pspell.c 2005-10-26 23:24:22.000000000 +0200
+@@ -16,7 +16,7 @@
+ +----------------------------------------------------------------------+
+ */
+
+-/* $Id: pspell.c,v 1.28.8.5 2003/08/28 20:01:29 iliaa Exp $ */
++/* $Id: pspell.c,v 1.28.8.5.4.2 2005/10/17 15:43:10 iliaa Exp $ */
+
+ #define IS_EXT_MODULE
+
+@@ -99,6 +99,22 @@
+ delete_pspell_config(config);
+ }
+
++#define PSPELL_FETCH_CONFIG \
++ convert_to_long_ex(conf); \
++ config = (PspellConfig *) zend_list_find(Z_LVAL_PP(conf), &type); \
++ if (config == NULL || type != le_pspell_config) { \
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a PSPELL config index", Z_LVAL_PP(conf)); \
++ RETURN_FALSE; \
++ } \
++
++#define PSPELL_FETCH_MANAGER \
++ convert_to_long_ex(scin); \
++ manager = (PspellManager *) zend_list_find(Z_LVAL_PP(scin), &type); \
++ if (!manager || type != le_pspell) { \
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a PSPELL result index", Z_LVAL_PP(scin)); \
++ RETURN_FALSE; \
++ } \
++
+ /* {{{ PHP_MINIT_FUNCTION
+ */
+ PHP_MINIT_FUNCTION(pspell)
+@@ -350,14 +366,8 @@
+ WRONG_PARAM_COUNT;
+ }
+
+- convert_to_long_ex(conf);
+- config = (PspellConfig *) zend_list_find(Z_LVAL_PP(conf), &type);
++ PSPELL_FETCH_CONFIG;
+
+- if (config == NULL || type != le_pspell_config) {
+- php_error(E_WARNING, "%ld is not a PSPELL config index", Z_LVAL_PP(conf));
+- RETURN_FALSE;
+- }
+-
+ ret = new_pspell_manager(config);
+
+ if(pspell_error_number(ret) != 0){
+@@ -385,13 +395,9 @@
+ WRONG_PARAM_COUNT;
+ }
+
+- convert_to_long_ex(scin);
+ convert_to_string_ex(word);
+- manager = (PspellManager *) zend_list_find(Z_LVAL_PP(scin), &type);
+- if(!manager){
+- php_error(E_WARNING, "%ld is not a PSPELL result index",Z_LVAL_PP(scin));
+- RETURN_FALSE;
+- }
++
++ PSPELL_FETCH_MANAGER;
+
+ if(pspell_manager_check(manager, Z_STRVAL_PP(word))){
+ RETURN_TRUE;
+@@ -417,13 +423,9 @@
+ WRONG_PARAM_COUNT;
+ }
+
+- convert_to_long_ex(scin);
+ convert_to_string_ex(word);
+- manager = (PspellManager *) zend_list_find(Z_LVAL_PP(scin), &type);
+- if(!manager){
+- php_error(E_WARNING, "%ld is not a PSPELL result index",Z_LVAL_PP(scin));
+- RETURN_FALSE;
+- }
++
++ PSPELL_FETCH_MANAGER;
+
+ array_init(return_value);
+
+@@ -455,14 +457,10 @@
+ WRONG_PARAM_COUNT;
+ }
+
+- convert_to_long_ex(scin);
+ convert_to_string_ex(miss);
+ convert_to_string_ex(corr);
+- manager = (PspellManager *) zend_list_find(Z_LVAL_PP(scin), &type);
+- if(!manager){
+- php_error(E_WARNING, "%ld is not a PSPELL result index",Z_LVAL_PP(scin));
+- RETURN_FALSE;
+- }
++
++ PSPELL_FETCH_MANAGER;
+
+ pspell_manager_store_replacement(manager, Z_STRVAL_PP(miss), Z_STRVAL_PP(corr));
+ if(pspell_manager_error_number(manager) == 0){
+@@ -488,13 +486,9 @@
+ WRONG_PARAM_COUNT;
+ }
+
+- convert_to_long_ex(scin);
+ convert_to_string_ex(word);
+- manager = (PspellManager *) zend_list_find(Z_LVAL_PP(scin), &type);
+- if(!manager){
+- php_error(E_WARNING, "%ld is not a PSPELL result index",Z_LVAL_PP(scin));
+- RETURN_FALSE;
+- }
++
++ PSPELL_FETCH_MANAGER;
+
+ /*If the word is empty, we have to return; otherwise we'll segfault! ouch!*/
+ if(Z_STRLEN_PP(word) == 0){
+@@ -525,13 +519,9 @@
+ WRONG_PARAM_COUNT;
+ }
+
+- convert_to_long_ex(scin);
+ convert_to_string_ex(word);
+- manager = (PspellManager *) zend_list_find(Z_LVAL_PP(scin), &type);
+- if(!manager){
+- php_error(E_WARNING, "%ld is not a PSPELL result index",Z_LVAL_PP(scin));
+- RETURN_FALSE;
+- }
++
++ PSPELL_FETCH_MANAGER;
+
+ /*If the word is empty, we have to return; otherwise we'll segfault! ouch!*/
+ if(Z_STRLEN_PP(word) == 0){
+@@ -562,12 +552,7 @@
+ WRONG_PARAM_COUNT;
+ }
+
+- convert_to_long_ex(scin);
+- manager = (PspellManager *) zend_list_find(Z_LVAL_PP(scin), &type);
+- if(!manager){
+- php_error(E_WARNING, "%ld is not a PSPELL result index",Z_LVAL_PP(scin));
+- RETURN_FALSE;
+- }
++ PSPELL_FETCH_MANAGER;
+
+ pspell_manager_clear_session(manager);
+ if(pspell_manager_error_number(manager) == 0){
+@@ -593,12 +578,7 @@
+ WRONG_PARAM_COUNT;
+ }
+
+- convert_to_long_ex(scin);
+- manager = (PspellManager *) zend_list_find(Z_LVAL_PP(scin), &type);
+- if(!manager){
+- php_error(E_WARNING, "%ld is not a PSPELL result index",Z_LVAL_PP(scin));
+- RETURN_FALSE;
+- }
++ PSPELL_FETCH_MANAGER;
+
+ pspell_manager_save_all_word_lists(manager);
+
+@@ -666,22 +646,17 @@
+ PHP_FUNCTION(pspell_config_runtogether)
+ {
+ int type;
+- zval **sccin, **runtogether;
++ zval **conf, **runtogether;
+ int argc;
+
+ PspellConfig *config;
+
+ argc = ZEND_NUM_ARGS();
+- if (argc != 2 || zend_get_parameters_ex(argc,&sccin,&runtogether) == FAILURE) {
++ if (argc != 2 || zend_get_parameters_ex(argc,&conf,&runtogether) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+- convert_to_long_ex(sccin);
+- config = (PspellConfig *) zend_list_find(Z_LVAL_PP(sccin), &type);
+- if(!config){
+- php_error(E_WARNING, "%ld is not a PSPELL config index",Z_LVAL_PP(sccin));
+- RETURN_FALSE;
+- }
++ PSPELL_FETCH_CONFIG;
+
+ convert_to_boolean_ex(runtogether);
+ pspell_config_replace(config, "run-together", Z_LVAL_PP(runtogether) ? "true" : "false");
+@@ -695,22 +670,17 @@
+ PHP_FUNCTION(pspell_config_mode)
+ {
+ int type;
+- zval **sccin, **mode;
++ zval **conf, **mode;
+ int argc;
+
+ PspellConfig *config;
+
+ argc = ZEND_NUM_ARGS();
+- if (argc != 2 || zend_get_parameters_ex(argc,&sccin,&mode) == FAILURE) {
++ if (argc != 2 || zend_get_parameters_ex(argc,&conf,&mode) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+- convert_to_long_ex(sccin);
+- config = (PspellConfig *) zend_list_find(Z_LVAL_PP(sccin), &type);
+- if(!config){
+- php_error(E_WARNING, "%ld is not a PSPELL config index",Z_LVAL_PP(sccin));
+- RETURN_FALSE;
+- }
++ PSPELL_FETCH_CONFIG;
+
+ convert_to_long_ex(mode);
+
+@@ -732,7 +702,7 @@
+ PHP_FUNCTION(pspell_config_ignore)
+ {
+ int type;
+- zval **sccin, **pignore;
++ zval **conf, **pignore;
+ int argc;
+
+ int loc = PSPELL_LARGEST_WORD;
+@@ -742,16 +712,11 @@
+ PspellConfig *config;
+
+ argc = ZEND_NUM_ARGS();
+- if (argc != 2 || zend_get_parameters_ex(argc,&sccin,&pignore) == FAILURE) {
++ if (argc != 2 || zend_get_parameters_ex(argc,&conf,&pignore) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+- convert_to_long_ex(sccin);
+- config = (PspellConfig *) zend_list_find(Z_LVAL_PP(sccin), &type);
+- if(!config){
+- php_error(E_WARNING, "%ld is not a PSPELL config index",Z_LVAL_PP(sccin));
+- RETURN_FALSE;
+- }
++ PSPELL_FETCH_CONFIG;
+
+ convert_to_long_ex(pignore);
+ ignore = Z_LVAL_PP(pignore);
+@@ -782,22 +747,17 @@
+ PHP_FUNCTION(pspell_config_personal)
+ {
+ int type;
+- zval **sccin, **personal;
++ zval **conf, **personal;
+ int argc;
+
+ PspellConfig *config;
+
+ argc = ZEND_NUM_ARGS();
+- if (argc != 2 || zend_get_parameters_ex(argc,&sccin,&personal) == FAILURE) {
++ if (argc != 2 || zend_get_parameters_ex(argc,&conf,&personal) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+- convert_to_long_ex(sccin);
+- config = (PspellConfig *) zend_list_find(Z_LVAL_PP(sccin), &type);
+- if(!config){
+- php_error(E_WARNING, "%ld is not a PSPELL config index",Z_LVAL_PP(sccin));
+- RETURN_FALSE;
+- }
++ PSPELL_FETCH_CONFIG;
+
+ convert_to_string_ex(personal);
+
+@@ -820,22 +780,17 @@
+ PHP_FUNCTION(pspell_config_repl)
+ {
+ int type;
+- zval **sccin, **repl;
++ zval **conf, **repl;
+ int argc;
+
+ PspellConfig *config;
+
+ argc = ZEND_NUM_ARGS();
+- if (argc != 2 || zend_get_parameters_ex(argc,&sccin,&repl) == FAILURE) {
++ if (argc != 2 || zend_get_parameters_ex(argc,&conf,&repl) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+- convert_to_long_ex(sccin);
+- config = (PspellConfig *) zend_list_find(Z_LVAL_PP(sccin), &type);
+- if(!config){
+- php_error(E_WARNING, "%ld is not a PSPELL config index",Z_LVAL_PP(sccin));
+- RETURN_FALSE;
+- }
++ PSPELL_FETCH_CONFIG;
+
+ pspell_config_replace(config, "save-repl", "true");
+
+@@ -860,22 +815,17 @@
+ PHP_FUNCTION(pspell_config_save_repl)
+ {
+ int type;
+- zval **sccin, **save;
++ zval **conf, **save;
+ int argc;
+
+ PspellConfig *config;
+
+ argc = ZEND_NUM_ARGS();
+- if (argc != 2 || zend_get_parameters_ex(argc,&sccin,&save) == FAILURE) {
++ if (argc != 2 || zend_get_parameters_ex(argc,&conf,&save) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+- convert_to_long_ex(sccin);
+- config = (PspellConfig *) zend_list_find(Z_LVAL_PP(sccin), &type);
+- if(!config){
+- php_error(E_WARNING, "%ld is not a PSPELL config index",Z_LVAL_PP(sccin));
+- RETURN_FALSE;
+- }
++ PSPELL_FETCH_CONFIG;
+
+ convert_to_boolean_ex(save);
+ pspell_config_replace(config, "save-repl", Z_LVAL_PP(save) ? "true" : "false");
diff --git a/dev-lang/php/files/4.3.11/php4.3.11-session_save_path-segf.patch b/dev-lang/php/files/4.3.11/php4.3.11-session_save_path-segf.patch
new file mode 100644
index 0000000..3836776
--- /dev/null
+++ b/dev-lang/php/files/4.3.11/php4.3.11-session_save_path-segf.patch
@@ -0,0 +1,154 @@
+--- sapi/apache2handler/sapi_apache2.c 2005-03-10 12:39:04.000000000 +0100
++++ sapi/apache2handler/sapi_apache2.c 2005-10-26 16:02:03.000000000 +0200
+@@ -18,7 +18,7 @@
+ +----------------------------------------------------------------------+
+ */
+
+-/* $Id: sapi_apache2.c,v 1.1.2.39 2005/03/10 11:39:04 jorton Exp $ */
++/* $Id: sapi_apache2.c,v 1.1.2.40.2.5 2005/10/12 21:41:36 tony2001 Exp $ */
+
+ #include <fcntl.h>
+
+@@ -268,23 +268,18 @@
+ TSRMLS_FETCH();
+
+ ctx = SG(server_context);
+-
+- /* We use APLOG_STARTUP because it keeps us from printing the
+- * data and time information at the beginning of the error log
+- * line. Not sure if this is correct, but it mirrors what happens
+- * with Apache 1.3 -- rbb
+- */
++
+ if (ctx == NULL) { /* we haven't initialized our ctx yet, oh well */
+ ap_log_error(APLOG_MARK, APLOG_ERR | APLOG_STARTUP, 0, NULL, "%s", msg);
+ } else {
+- ap_log_rerror(APLOG_MARK, APLOG_ERR | APLOG_STARTUP, 0, ctx->r, "%s", msg);
++ ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, ctx->r, "%s", msg);
+ }
+ }
+
+ static void php_apache_sapi_log_message_ex(char *msg, request_rec *r)
+ {
+ if (r) {
+- ap_log_rerror(APLOG_MARK, APLOG_ERR | APLOG_STARTUP, 0, r, msg, r->filename);
++ ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, msg, r->filename);
+ } else {
+ php_apache_sapi_log_message(msg);
+ }
+@@ -458,15 +453,34 @@
+ request_rec *parent_req = NULL;
+ TSRMLS_FETCH();
+
++#define PHPAP_INI_OFF \
++ if (strcmp(r->protocol, "INCLUDED")) { \
++ zend_try { zend_ini_deactivate(TSRMLS_C); } zend_end_try(); \
++ } \
++
+ conf = ap_get_module_config(r->per_dir_config, &php4_module);
++
++ /* apply_config() needs r in some cases, so allocate server_context early */
++ ctx = SG(server_context);
++ if (ctx == NULL) {
++ ctx = SG(server_context) = apr_pcalloc(r->pool, sizeof(*ctx));
++ /* register a cleanup so we clear out the SG(server_context)
++ * after each request. Note: We pass in the pointer to the
++ * server_context in case this is handled by a different thread.
++ */
++ apr_pool_cleanup_register(r->pool, (void *)&SG(server_context), php_server_context_cleanup, apr_pool_cleanup_null);
++ ctx->r = r;
++ ctx = NULL; /* May look weird to null it here, but it is to catch the right case in the first_try later on */
++ } else {
++ parent_req = ctx->r;
++ ctx->r = r;
++ }
+ apply_config(conf);
+
+ if (strcmp(r->handler, PHP_MAGIC_TYPE) && strcmp(r->handler, PHP_SOURCE_MAGIC_TYPE) && strcmp(r->handler, PHP_SCRIPT)) {
+ /* Check for xbithack in this case. */
+ if (!AP2(xbithack) || strcmp(r->handler, "text/html") || !(r->finfo.protection & APR_UEXECUTE)) {
+- zend_try {
+- zend_ini_deactivate(TSRMLS_C);
+- } zend_end_try();
++ PHPAP_INI_OFF;
+ return DECLINED;
+ }
+ }
+@@ -475,32 +489,24 @@
+ * the configuration; default behaviour is to accept. */
+ if (r->used_path_info == AP_REQ_REJECT_PATH_INFO
+ && r->path_info && r->path_info[0]) {
+- zend_try {
+- zend_ini_deactivate(TSRMLS_C);
+- } zend_end_try();
++ PHPAP_INI_OFF;
+ return HTTP_NOT_FOUND;
+ }
+
+ /* handle situations where user turns the engine off */
+ if (!AP2(engine)) {
+- zend_try {
+- zend_ini_deactivate(TSRMLS_C);
+- } zend_end_try();
++ PHPAP_INI_OFF;
+ return DECLINED;
+ }
+
+ if (r->finfo.filetype == 0) {
+ php_apache_sapi_log_message_ex("script '%s' not found or unable to stat", r);
+- zend_try {
+- zend_ini_deactivate(TSRMLS_C);
+- } zend_end_try();
++ PHPAP_INI_OFF;
+ return HTTP_NOT_FOUND;
+ }
+ if (r->finfo.filetype == APR_DIR) {
+ php_apache_sapi_log_message_ex("attempt to invoke directory '%s' as script", r);
+- zend_try {
+- zend_ini_deactivate(TSRMLS_C);
+- } zend_end_try();
++ PHPAP_INI_OFF;
+ return HTTP_FORBIDDEN;
+ }
+
+@@ -516,24 +522,30 @@
+
+ zend_first_try {
+
+- ctx = SG(server_context);
+ if (ctx == NULL) {
+- ctx = SG(server_context) = apr_pcalloc(r->pool, sizeof(*ctx));
+- /* register a cleanup so we clear out the SG(server_context)
+- * after each request. Note: We pass in the pointer to the
+- * server_context in case this is handled by a different thread.
+- */
+- apr_pool_cleanup_register(r->pool, (void *)&SG(server_context), php_server_context_cleanup, apr_pool_cleanup_null);
+-
+- ctx->r = r;
++normal:
+ brigade = apr_brigade_create(r->pool, r->connection->bucket_alloc);
++ ctx = SG(server_context);
+ ctx->brigade = brigade;
+
+ if (php_apache_request_ctor(r, ctx TSRMLS_CC)!=SUCCESS) {
+ zend_bailout();
+ }
+ } else {
+- parent_req = ctx->r;
++ if (!parent_req) {
++ parent_req = ctx->r;
++ }
++ if (parent_req && strcmp(parent_req->handler, PHP_MAGIC_TYPE) && strcmp(parent_req->handler, PHP_SOURCE_MAGIC_TYPE) && strcmp(parent_req->handler, PHP_SCRIPT)) {
++ if (php_apache_request_ctor(r, ctx TSRMLS_CC)!=SUCCESS) {
++ zend_bailout();
++ }
++ }
++
++ /* check if comming due to ErrorDocument */
++ if (parent_req && parent_req->status != HTTP_OK) {
++ parent_req = NULL;
++ goto normal;
++ }
+ ctx->r = r;
+ brigade = ctx->brigade;
+ }