Hi,

Thank you for the patch. Cyrus extension is now in PECL
(http://pecl.php.net/) and I'm the primary maintainer of it.

I think the problems you pointed out were already addressed and
fixed in CVS. Please check out the source at
http://cvs.php.net/cvs.php/pecl/cyrus/ and send me a patch
if you still think something is missing then.

Regards,
Moriyoshi

On 2004/10/13, at 22:50, Martin Kraemer wrote:

Hi,

In the cyrus_connect() php function, the Cyrus function
imclient_connect() is called, and its return value is checked for
0, -1 or -2. There is a problem with that however:

a) imclient_connect() returns in fact 0, -1, -2 OR the value of
   errno (if something outside of imclient_connect()'s scope failed).
   This can and will happen if you pass it a valid hostname where
   no IMAP server is listening.
   From the man page:
     imclient_connect()
          Connects the client server to the host. If successful,
          it returns 0 and sets the imclient argument to a
          pointer to an imclient struct. The imclient struct
          represents the current connection,  flags, and
          callbacks. On failure, the current errno is returned if
---------------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          a system call failed,  -1 is returned if the host name
          was not found, and  -2 is returned if the service name
          was not found.

b) conn can be uninitialized if the return value is not 0, -1 or -2,
   but it WILL be used in ZEND_REGISTER_RESOURCE, and will be
   dereferenced at the end of PHP_FUNCTION(cyrus_connect).

Find a patch which tries to be more conservative about pointers, plus
it checks the errno-branch of imclient_connect()'s return.

   Martin
--
<[EMAIL PROTECTED]>         |     Fujitsu Siemens
Fon: +49-89-636-46021, FAX: +49-89-636-47655 | 81730  Munich,  Germany
<cyrus.c.diff>--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php



Reply via email to