From f59d444d8af57026748648ece7d01f10291d50bf Mon Sep 17 00:00:00 2001 From: Antony Dovgal Date: Mon, 29 May 2006 10:23:53 +0000 Subject: [PATCH] prevent resource leaking when passing invalid stream resource as second argument --- ext/standard/file.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/ext/standard/file.c b/ext/standard/file.c index 121ba395ad..551605f871 100644 --- a/ext/standard/file.c +++ b/ext/standard/file.c @@ -588,12 +588,17 @@ PHP_FUNCTION(file_put_contents) zval *zcontext = NULL; php_stream_context *context = NULL; char mode[3] = { 'w', 0, 0 }; + php_stream *srcstream; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "tz/|lr!", &filename, &filename_len, &filename_type, &data, &flags, &zcontext) == FAILURE) { return; } + if (Z_TYPE_P(data) == IS_RESOURCE) { + php_stream_from_zval(srcstream, &data); + } + context = php_stream_context_from_zval(zcontext, flags & PHP_FILE_NO_DEFAULT_CONTEXT); if (flags & PHP_FILE_APPEND) { @@ -627,14 +632,8 @@ PHP_FUNCTION(file_put_contents) switch (Z_TYPE_P(data)) { case IS_RESOURCE: - { - php_stream *srcstream; - php_stream_from_zval(srcstream, &data); - numchars = php_stream_copy_to_stream(srcstream, stream, PHP_STREAM_COPY_ALL); - break; - } case IS_ARRAY: if (zend_hash_num_elements(Z_ARRVAL_P(data))) { zval **tmp; -- 2.40.0