]> granicus.if.org Git - php/commitdiff
fixed a possible double-free
authorThies C. Arntzen <thies@php.net>
Sun, 18 Feb 2001 18:15:01 +0000 (18:15 +0000)
committerThies C. Arntzen <thies@php.net>
Sun, 18 Feb 2001 18:15:01 +0000 (18:15 +0000)
ext/imap/php_imap.c

index ffaca95762a63a683f2378283617917d184b54a4..6ae886219486eb729618717086ae1a6807cb166f 100644 (file)
@@ -187,8 +187,15 @@ void mail_close_it(zend_rsrc_list_entry *rsrc)
 
        mail_close_full(imap_le_struct->imap_stream, imap_le_struct->flags);
 
-       efree(IMAPG(imap_user));
-       efree(IMAPG(imap_password));
+       if (IMAPG(imap_user)) {
+               efree(IMAPG(imap_user));
+               IMAPG(imap_user) = 0;
+       }
+       if (IMAPG(imap_password)) {
+               efree(IMAPG(imap_password));
+               IMAPG(imap_password) = 0;
+       }
+
        efree(imap_le_struct);
 }
 
@@ -638,6 +645,14 @@ void imap_do_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
                }
        }
 
+       if (IMAPG(imap_user)) { 
+               efree(IMAPG(imap_user));
+       }
+
+       if (IMAPG(imap_password)) { 
+               efree(IMAPG(imap_password));
+       }
+
        IMAPG(imap_user)     = estrndup(Z_STRVAL_PP(user), Z_STRLEN_PP(user));
        IMAPG(imap_password) = estrndup(Z_STRVAL_PP(passwd), Z_STRLEN_PP(passwd));