From: Ilia Alshanetsky Date: Mon, 11 Oct 2004 18:31:49 +0000 (+0000) Subject: Fixed bug #30362 (stream_get_line() not handling end string correctly). X-Git-Tag: PRE_NEW_VM_GEN_PATCH~44 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5c04e39383fcf889c5b7824299d0232e5477a9b3;p=php Fixed bug #30362 (stream_get_line() not handling end string correctly). --- diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c index 5b7a2bf209..91093a7653 100644 --- a/ext/standard/streamsfuncs.c +++ b/ext/standard/streamsfuncs.c @@ -1117,11 +1117,11 @@ PHP_FUNCTION(stream_filter_remove) } /* }}} */ -/* {{{ proto string stream_get_line(resource stream, int maxlen, string ending) +/* {{{ proto string stream_get_line(resource stream, int maxlen [, string ending]) Read up to maxlen bytes from a stream or until the ending string is found */ PHP_FUNCTION(stream_get_line) { - char *str; + char *str = NULL; int str_len; long max_length; zval *zstream; @@ -1129,7 +1129,7 @@ PHP_FUNCTION(stream_get_line) size_t buf_size; php_stream *stream; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rls", &zstream, &max_length, &str, &str_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl|s", &zstream, &max_length, &str, &str_len) == FAILURE) { RETURN_FALSE; } diff --git a/main/streams/streams.c b/main/streams/streams.c index 6242afcf82..9a071746bc 100755 --- a/main/streams/streams.c +++ b/main/streams/streams.c @@ -846,7 +846,7 @@ PHPAPI char *php_stream_get_record(php_stream *stream, size_t maxlen, size_t *re php_stream_fill_read_buffer(stream, maxlen TSRMLS_CC); - if (delim_len == 0) { + if (delim_len == 0 || !delim) { toread = maxlen; } else { if (delim_len == 1) { @@ -870,6 +870,7 @@ PHPAPI char *php_stream_get_record(php_stream *stream, size_t maxlen, size_t *re *returned_len = php_stream_read(stream, buf, toread); if (*returned_len >= 0) { + buf[*returned_len] = '\0'; return buf; } else { efree(buf);