summaryrefslogtreecommitdiff
path: root/ext/imap/php_imap.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/imap/php_imap.c')
-rw-r--r--ext/imap/php_imap.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c
index ffaca95762..6ae8862194 100644
--- a/ext/imap/php_imap.c
+++ b/ext/imap/php_imap.c
@@ -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));