mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Proper fix for bug #39215 Inappropriate close of stdin/stdout/stderr
This commit is contained in:
parent
5f82777275
commit
70105187db
1 changed files with 12 additions and 4 deletions
|
@ -159,6 +159,7 @@ php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, char *path, ch
|
|||
php_stream * stream = NULL;
|
||||
char *p, *token, *pathdup;
|
||||
long max_memory;
|
||||
FILE *file = NULL;
|
||||
|
||||
if (!strncasecmp(path, "php://", 6)) {
|
||||
path += 6;
|
||||
|
@ -210,6 +211,7 @@ php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, char *path, ch
|
|||
fd = dup(fd);
|
||||
} else {
|
||||
cli_in = 1;
|
||||
file = stdin;
|
||||
}
|
||||
} else {
|
||||
fd = dup(STDIN_FILENO);
|
||||
|
@ -222,6 +224,7 @@ php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, char *path, ch
|
|||
fd = dup(fd);
|
||||
} else {
|
||||
cli_out = 1;
|
||||
file = stdout;
|
||||
}
|
||||
} else {
|
||||
fd = dup(STDOUT_FILENO);
|
||||
|
@ -234,6 +237,7 @@ php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, char *path, ch
|
|||
fd = dup(fd);
|
||||
} else {
|
||||
cli_err = 1;
|
||||
file = stderr;
|
||||
}
|
||||
} else {
|
||||
fd = dup(STDERR_FILENO);
|
||||
|
@ -285,10 +289,14 @@ php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, char *path, ch
|
|||
/* failed to dup */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
stream = php_stream_fopen_from_fd(fd, mode, NULL);
|
||||
if (stream == NULL) {
|
||||
close(fd);
|
||||
|
||||
if (file) {
|
||||
stream = php_stream_fopen_from_file(file, mode);
|
||||
} else {
|
||||
stream = php_stream_fopen_from_fd(fd, mode, NULL);
|
||||
if (stream == NULL) {
|
||||
close(fd);
|
||||
}
|
||||
}
|
||||
|
||||
return stream;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue