]> granicus.if.org Git - php/commitdiff
use estrndup and efree to hopefully avoid both munging of arguments and
authorChuck Hagenbuch <chagenbu@php.net>
Fri, 18 Aug 2000 16:02:27 +0000 (16:02 +0000)
committerChuck Hagenbuch <chagenbu@php.net>
Fri, 18 Aug 2000 16:02:27 +0000 (16:02 +0000)
leaking memory.

ext/imap/php_imap.c

index 18253c46f459ef67a46df91278f458eb6ff4a75a..941b2aa9480f4ff94ad2c402ac2115c4a90b0a40 100644 (file)
@@ -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);
 }
 /* }}} */