Browse Source

Fixed bug in new stream_get_line() when using NUL as a delimiter.

This is the issue Derick spotted a few days ago..
pull/47/head
Gustavo André dos Santos Lopes 15 years ago
parent
commit
0f180a63eb
  1. 27
      ext/standard/tests/streams/stream_get_line_NUL_delimiter.phpt
  2. 4
      main/streams/streams.c

27
ext/standard/tests/streams/stream_get_line_NUL_delimiter.phpt

@ -0,0 +1,27 @@
--TEST--
Bug #60455: stream_get_line and \0 as a delimiter
--FILE--
<?php
class TestStream {
private $s = 0;
function stream_open($path, $mode, $options, &$opened_path) {
return true;
}
function stream_read($count) {
if ($this->s++ == 0)
return "a\0";
return "";
}
function stream_eof() {
return $this->s >= 2;
}
}
stream_wrapper_register("test", "TestStream");
$f = fopen("test://", "r");
var_dump(stream_get_line($f, 100, "\0"));
--EXPECT--
string(1) "a"

4
main/streams/streams.c

@ -957,8 +957,8 @@ PHPAPI char *php_stream_get_record(php_stream *stream, size_t maxlen, size_t *re
char *ret_buf, /* returned buffer */
*found_delim = NULL;
size_t buffered_len,
tent_ret_len; /* tentative returned length*/
int has_delim = delim_len > 0 && delim[0] != '\0';
tent_ret_len; /* tentative returned length */
int has_delim = delim_len > 0;
if (maxlen == 0) {
return NULL;

Loading…
Cancel
Save