summaryrefslogtreecommitdiff
path: root/ext/imap/php_imap.c
diff options
context:
space:
mode:
authorChuck Hagenbuch <chagenbu@php.net>2000-08-18 16:02:27 +0000
committerChuck Hagenbuch <chagenbu@php.net>2000-08-18 16:02:27 +0000
commitc4b2498baea2a1eb060652c364e81889433ce778 (patch)
treec4ad23b0092b5b483dcb601b31c6bb5347f8e66f /ext/imap/php_imap.c
parentea98567404584be93ffff4a74a619e16501650ac (diff)
downloadphp-git-c4b2498baea2a1eb060652c364e81889433ce778.tar.gz
use estrndup and efree to hopefully avoid both munging of arguments and
leaking memory.
Diffstat (limited to 'ext/imap/php_imap.c')
-rw-r--r--ext/imap/php_imap.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c
index 18253c46f4..941b2aa948 100644
--- a/ext/imap/php_imap.c
+++ b/ext/imap/php_imap.c
@@ -3385,6 +3385,7 @@ PHP_FUNCTION(imap_search)
int ind, ind_type, args;
pils *imap_le_struct;
long flags;
+ char *search_criteria;
MESSAGELIST *cur;
IMAPLS_FETCH();
@@ -3395,6 +3396,7 @@ PHP_FUNCTION(imap_search)
convert_to_long_ex(streamind);
convert_to_string_ex(criteria);
+ search_criteria = estrndup(Z_STRVAL_PP(criteria), Z_STRLEN_PP(criteria));
if (args == 2) {
flags = SE_FREE;
@@ -3411,7 +3413,7 @@ PHP_FUNCTION(imap_search)
}
IMAPG(imap_messages) = NIL;
- mail_search_full(imap_le_struct->imap_stream, NIL, mail_criteria(cpystr(Z_STRVAL_PP(criteria))), flags);
+ mail_search_full(imap_le_struct->imap_stream, NIL, mail_criteria(search_criteria), flags);
if (IMAPG(imap_messages) == NIL) {
RETURN_FALSE;
}
@@ -3423,6 +3425,7 @@ PHP_FUNCTION(imap_search)
cur = cur->next;
}
mail_free_messagelist(&IMAPG(imap_messages));
+ efree(search_criteria);
}
/* }}} */