ID: 13961
Comment by: daniele at orlandi dot com
Reported By: lampa at fee dot vutbr dot cz
Status: No Feedback
Bug Type: Apache related
Operating System: FreeBSD
PHP Version: 4.0.6, 4.1.0
Assigned To: derick
New Comment:
This bug is still present in php 4.3.4 and may be harmful since all the
BrowserMatch functionality to workaround browser bugs in Apache is
essentially disabled.
As a proof of concept i patched sapi/apache2handler/sapi_apache2.c
(apache2filter is probably affected too) and the problem went away.
Note that the patch may not be perfect as I don't know how Apache and
PHP work internally very well.
--- php-4.3.4/sapi/apache2handler/sapi_apache2.c 2003-10-02
05:24:43.000000000 +0200
+++ php-4.3.4-patched/sapi/apache2handler/sapi_apache2.c
2003-11-11 23:52:06.000000000 +0100
@@ -227,9 +227,14 @@
char *key, *val;
zval **path_translated_zv;
+ char *t;
+
APR_ARRAY_FOREACH_OPEN(arr, key, val)
if (!val) val = empty_string;
- php_register_variable(key, val, track_vars_array
TSRMLS_CC);
+
+ t = estrndup(key, strlen(key));
+ php_register_variable(t, val, track_vars_array
TSRMLS_CC);
+ efree(t);
APR_ARRAY_FOREACH_CLOSE()
Previous Comments:
------------------------------------------------------------------------
[2002-10-15 01:00:02] php-bugs at lists dot php dot net
No feedback was provided for this bug for over 2 weeks, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
------------------------------------------------------------------------
[2002-09-29 20:41:13] [EMAIL PROTECTED]
Please try using this CVS snapshot:
http://snaps.php.net/php4-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php4-win32-latest.zip
This should be fixed in CVS (If I remember correctly) so could you
please try the snapshot and verify it for us?
------------------------------------------------------------------------
[2001-12-11 09:57:36] lampa at fee dot vutbr dot cz
Not fixed in 4.1.0. Why? To be clear, one call is neccessary:
for (i = 0; i < arr->nelts; i++) {
char *val,*key;
if (elts[i].val) {
val = elts[i].val;
} else {
val = empty_string;
}
key = estrdup(elts[i].key); /* HERE */
php_register_variable(key, val, track_vars_array
ELS_CC PLS_CC)
;
}
------------------------------------------------------------------------
[2001-11-07 04:33:03] [EMAIL PROTECTED]
This is not okay, PHP should not change the original key here.
Checking it out.
------------------------------------------------------------------------
[2001-11-07 01:56:30] lampa at fee dot vutbr dot cz
I don't think that FAQ solves that problem.
Look at the source code of Apache server. There
are several tests of the variable "force-response-1.0"
there. The problem is not that php code variable
is $force-response-1_0, that's OK, but the real
problem is that apache variable name in r->subprocess_env
is changed too. That's side effect and not pleasent.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/13961
--
Edit this bug report at http://bugs.php.net/?id=13961&edit=1