summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntony Dovgal <tony2001@php.net>2006-09-05 11:24:49 +0000
committerAntony Dovgal <tony2001@php.net>2006-09-05 11:24:49 +0000
commit8c53ff1e801a8127b24a4bd551613a3f4bd4bc8d (patch)
tree431cd615f3d0058e638ca14f925499155ea4bcec
parentc622ded86672eb6958794cc25629d9f4106dc74b (diff)
downloadphp-git-8c53ff1e801a8127b24a4bd551613a3f4bd4bc8d.tar.gz
fix leak in imap_utf8(), avoid extra strlen() call
add test
-rw-r--r--ext/imap/php_imap.c5
-rw-r--r--ext/imap/tests/imap_utf8.phpt22
2 files changed, 26 insertions, 1 deletions
diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c
index dcaa200ead..a4e7b7ae0f 100644
--- a/ext/imap/php_imap.c
+++ b/ext/imap/php_imap.c
@@ -2178,7 +2178,10 @@ PHP_FUNCTION(imap_utf8)
cpytxt(&src, Z_STRVAL_PP(str), Z_STRLEN_PP(str));
utf8_mime2text(&src, &dest);
- RETURN_STRINGL(dest.data, strlen(dest.data), 1);
+ RETVAL_STRINGL(dest.data, dest.size, 1);
+ if (dest.data) {
+ free(dest.data);
+ }
}
/* }}} */
diff --git a/ext/imap/tests/imap_utf8.phpt b/ext/imap/tests/imap_utf8.phpt
new file mode 100644
index 0000000000..dd432862f7
--- /dev/null
+++ b/ext/imap/tests/imap_utf8.phpt
@@ -0,0 +1,22 @@
+--TEST--
+imap_utf8() tests
+--SKIPIF--
+<?php if (!extension_loaded("imap")) print "skip"; ?>
+--FILE--
+<?php
+
+var_dump(imap_utf8(""));
+var_dump(imap_utf8(1));
+var_dump(imap_utf8(array(1,2)));
+var_dump(imap_utf8("test"));
+
+echo "Done\n";
+?>
+--EXPECTF--
+string(0) ""
+string(1) "1"
+
+Notice: Array to string conversion in %s on line %d
+string(5) "Array"
+string(4) "test"
+Done