iliaa                                    Wed, 18 Nov 2009 13:37:45 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=290913

Log:
Fixed bug #50212 (crash by ldap_get_option() with LDAP_OPT_NETWORK_TIMEOUT).

Bug: http://bugs.php.net/50212 (Open) SEGV by ldap_get_option() with 
LDAP_OPT_NETWORK_TIMEOUT
      
Changed paths:
    U   php/php-src/branches/PHP_5_3/NEWS
    U   php/php-src/branches/PHP_5_3/ext/ldap/ldap.c
    U   php/php-src/trunk/ext/ldap/ldap.c

Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS   2009-11-18 13:24:41 UTC (rev 290912)
+++ php/php-src/branches/PHP_5_3/NEWS   2009-11-18 13:37:45 UTC (rev 290913)
@@ -21,6 +21,8 @@
 - Fixed memory leak in extension loading when an error occurs on Windows.
   (Pierre)

+- Fixed bug #50212 (crash by ldap_get_option() with LDAP_OPT_NETWORK_TIMEOUT).
+  (Ilia, shigeru_kitazaki at cybozu dot co dot jp)
 - Fixed bug #50140 (With default compilation option, php symbols are
   unresolved for nsapi). (Uwe Schindler)
 - Fixed bug #50174 (Incorrectly matched docComment). (Felipe)

Modified: php/php-src/branches/PHP_5_3/ext/ldap/ldap.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/ldap/ldap.c        2009-11-18 13:24:41 UTC 
(rev 290912)
+++ php/php-src/branches/PHP_5_3/ext/ldap/ldap.c        2009-11-18 13:37:45 UTC 
(rev 290913)
@@ -1583,14 +1583,17 @@
 #ifdef LDAP_OPT_NETWORK_TIMEOUT
        case LDAP_OPT_NETWORK_TIMEOUT:
                {
-                       struct timeval *timeout;
+                       struct timeval *timeout = NULL;

                        if (ldap_get_option(ld->link, LDAP_OPT_NETWORK_TIMEOUT, 
(void *) &timeout)) {
                                if (timeout) {
                                        ldap_memfree(timeout);
                                }
                                RETURN_FALSE;
-                       }
+                       }
+                       if (!timeout) {
+                               RETURN_FALSE;
+                       }
                        zval_dtor(retval);
                        ZVAL_LONG(retval, timeout->tv_sec);
                        ldap_memfree(timeout);

Modified: php/php-src/trunk/ext/ldap/ldap.c
===================================================================
--- php/php-src/trunk/ext/ldap/ldap.c   2009-11-18 13:24:41 UTC (rev 290912)
+++ php/php-src/trunk/ext/ldap/ldap.c   2009-11-18 13:37:45 UTC (rev 290913)
@@ -1619,14 +1619,17 @@
 #ifdef LDAP_OPT_NETWORK_TIMEOUT
        case LDAP_OPT_NETWORK_TIMEOUT:
                {
-                       struct timeval *timeout;
+                       struct timeval *timeout = NULL;

                        if (ldap_get_option(ld->link, LDAP_OPT_NETWORK_TIMEOUT, 
(void *) &timeout)) {
                                if (timeout) {
                                        ldap_memfree(timeout);
                                }
                                RETURN_FALSE;
-                       }
+                       }
+                       if (!timeout) {
+                               RETURN_FALSE;
+                       }
                        zval_dtor(retval);
                        ZVAL_LONG(retval, timeout->tv_sec);
                        ldap_memfree(timeout);

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to