summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2003-02-25 16:21:00 +0000
committerIlia Alshanetsky <iliaa@php.net>2003-02-25 16:21:00 +0000
commitf29964e2bac13b1f01337725fddff4282102019b (patch)
tree145aab6bcec70c0c5794c9cd0e9fab1ad3c81523
parent400f466040095cd75d21355bc3082dd3e75fb9e5 (diff)
downloadphp-git-f29964e2bac13b1f01337725fddff4282102019b.tar.gz
Fixed bug #22414 and added a test case for it.
-rw-r--r--ext/standard/exec.c2
-rw-r--r--ext/standard/tests/file/bug22414.phpt37
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