ID: 42682
Comment by: cory dot mcdonald at perfectmale54 dot com
Reported By: Slig at free dot fr
Status: Open
Bug Type: Streams related
Operating System: linux-64
PHP Version: 5CVS-2007-10-11 (snap)
New Comment:
Hi,
Is PHP going to fix this bug in a new build if PHP?
Thanks,
corymcd
Previous Comments:
------------------------------------------------------------------------
[2007-10-22 11:00:26] [EMAIL PROTECTED]
Is there difference between openssl versions on those Suse/Centos
machines?
------------------------------------------------------------------------
[2007-10-12 18:25:57] margus at zone dot ee
Perhaps it helps if I give test results on different machines and where
and how it manifests:
stream_select() works flawlessly without patching on:
- my multiple 32bit machines. Those have SuSE90 or SuSE93 installed.
- my multiple 64bit SuSE10 machines
stream_select() works only when patched 'long this_fd;' or 'long
this_fd=0;' on:
- my multiple 64bit CentOS 4.5 systems (Xeon Quadcore)
stream_select() works only when patched 'long this_fd=0;'
(stream_select segfaults without variable initializing) on:
- my one 64bit CentOS 4.5 machine (Opteron Dualcore).
Origin of this bug must be somewhere in php_stream_cast() or even
lower. I tried also compiling without OpenSSL support and yes, the bug
along with SSL socket support can be "eliminated" this way too :)
------------------------------------------------------------------------
[2007-10-12 17:17:10] Slig at free dot fr
No, just setting it to 0 doesn't work.
And margus is true, using 'long this_fd;' it works (with or without
setting it to 0). I don't say it's the right solution, perhaps it's more
something to change in php_stream_cast(), i don't know.
------------------------------------------------------------------------
[2007-10-12 10:20:28] [EMAIL PROTECTED]
Try this patch (just manually change the 2 lines :):
Index: streamsfuncs.c
===================================================================
RCS file: /repository/php-src/ext/standard/streamsfuncs.c,v
retrieving revision 1.58.2.6.2.15.2.4
diff -u -a -r1.58.2.6.2.15.2.4 streamsfuncs.c
--- streamsfuncs.c 10 Oct 2007 12:58:41 -0000
1.58.2.6.2.15.2.4
+++ streamsfuncs.c 12 Oct 2007 10:19:55 -0000
@@ -573,7 +573,7 @@
{
zval **elem;
php_stream *stream;
- php_socket_t this_fd;
+ php_socket_t this_fd = 0;
int cnt = 0;
if (Z_TYPE_P(stream_array) != IS_ARRAY) {
@@ -610,7 +610,7 @@
zval **elem, **dest_elem;
php_stream *stream;
HashTable *new_hash;
- php_socket_t this_fd;
+ php_socket_t this_fd = 0;
int ret = 0;
if (Z_TYPE_P(stream_array) != IS_ARRAY) {
------------------------------------------------------------------------
[2007-10-12 10:10:34] [EMAIL PROTECTED]
But it won't work in future. I tried to figure out why changing that
int to long would help but AFAICT it's really supposed to be int since
everything else using this_fd is expecting it to be int..
------------------------------------------------------------------------
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/42682
--
Edit this bug report at http://bugs.php.net/?id=42682&edit=1