]> granicus.if.org Git - php/commitdiff
- MFH: #47940, leaks in imap_body()
authorPierre Joye <pajoye@php.net>
Thu, 23 Apr 2009 22:25:13 +0000 (22:25 +0000)
committerPierre Joye <pajoye@php.net>
Thu, 23 Apr 2009 22:25:13 +0000 (22:25 +0000)
ext/imap/php_imap.c

index 331056d9aa82dcf9d32cc6703799da8389be2326..830f44cf3d86fabf2558164fee4defff53a311d2 100644 (file)
@@ -1575,6 +1575,8 @@ PHP_FUNCTION(imap_body)
        long msgno, flags = 0;
        pils *imap_le_struct; 
        int msgindex, argc = ZEND_NUM_ARGS();
+       char *body;
+       unsigned long body_len = 0;
 
        if (zend_parse_parameters(argc TSRMLS_CC, "rl|l", &streamind, &msgno, &flags) == FAILURE) {
                return;
@@ -1600,7 +1602,13 @@ PHP_FUNCTION(imap_body)
                RETURN_FALSE;
        }
 
-       RETVAL_STRING(mail_fetchtext_full(imap_le_struct->imap_stream, msgno, NIL, (argc == 3 ? flags : NIL)), 1);
+       body = mail_fetchtext_full (imap_le_struct->imap_stream, msgno, &body_len, (argc == 3 ? flags : NIL));
+       if (body_len == 0) {
+               RETVAL_EMPTY_STRING();
+       } else {
+               RETVAL_STRINGL(body, body_len, 1);
+       }
+       free(body);
 }
 /* }}} */