diff options
author | Ilia Alshanetsky <iliaa@php.net> | 2003-02-25 16:21:00 +0000 |
---|---|---|
committer | Ilia Alshanetsky <iliaa@php.net> | 2003-02-25 16:21:00 +0000 |
commit | f29964e2bac13b1f01337725fddff4282102019b (patch) | |
tree | 145aab6bcec70c0c5794c9cd0e9fab1ad3c81523 | |
parent | 400f466040095cd75d21355bc3082dd3e75fb9e5 (diff) | |
download | php-git-f29964e2bac13b1f01337725fddff4282102019b.tar.gz |
Fixed bug #22414 and added a test case for it.
-rw-r--r-- | ext/standard/exec.c | 2 | ||||
-rw-r--r-- | ext/standard/tests/file/bug22414.phpt | 37 |
2 files changed, 38 insertions, 1 deletions
diff --git a/ext/standard/exec.c b/ext/standard/exec.c index e38069ab72..a7d4078dd0 100644 --- a/ext/standard/exec.c +++ b/ext/standard/exec.c @@ -213,7 +213,7 @@ int php_Exec(int type, char *cmd, pval *array, pval *return_value TSRMLS_DC) } else { size_t b; - while ((b = fread(buf, buflen, 1, fp)) > 0) { + while((b = php_stream_read(stream, buf, EXEC_INPUT_BUF)) > 0) { if (output) { PHPWRITE(buf, b); } diff --git a/ext/standard/tests/file/bug22414.phpt b/ext/standard/tests/file/bug22414.phpt new file mode 100644 index 0000000000..c67ae2ed66 --- /dev/null +++ b/ext/standard/tests/file/bug22414.phpt @@ -0,0 +1,37 @@ +--TEST-- +Bug #22414: passthru() does not read data correctly +--SKIPIF-- +<?php + if (empty(@shell_exec("which cat")) { + dir('skip cat binary needed for this test is not avaliable'); + } +?> +--POST-- +--GET-- +--FILE-- +<?php + $php = getenv('TEST_PHP_EXECUTABLE'); + $pwd = realpath(dirname(__FILE__)); + + /* Regular Data Test */ + passthru($php . ' -r " echo \"HELLO\"; "'); + + echo "\n"; + + /* Binary Data Test */ + @unlink($pwd . '/passthru_test'); + + $cmd = $php . ' -r \' passthru("cat ' . $php . '"); \' > ' . $pwd . '/passthru_test'; + exec($cmd); + + if (md5_file($php) == md5_file($pwd . '/passthru_test')) { + echo "Works\n"; + } else { + echo "Does not work\n"; + } + + @unlink($pwd . '/passthru_test'); +?> +--EXPECT-- +HELLO +Works |