Mail Archives: cygwin/2007/01/23/22:38:47
Eric Blake <ebb9 <at> byu.net> writes:
>
> So, I retract that it is a cygwin bug, and instead claim it is an upstream
bash
> bug. It is solved by doing freopen(NULL,"w",stdout) after replacing the fd,
> since that is the mechanism for telling stdio that it should please choose
the
> correct text or binary mode based on the new underlying fd.
Also vulnerable is executing a pipeline with a shell builtin when the shell's
stdout is in text mode (I suppose a parallel bug exists with the read builtin
on the receiving end of a pipe, but can't come up with a way to test it, since
read is not designed to be executed in a pipeline).
$ bash -c 'echo hi | od -tx1z' | cat -A
0000000 68 69 0a >hi.<$
0000003$
$ bash -c 'echo hi | od -tx1z' > ~/text/x
$ cat -A ~/text/x
0000000 68 69 0d 0a >hi..<$
0000004$
$ bash -c '/bin/echo hi | od -tx1z' > ~/text/x
$ cat -A ~/text/x
0000000 68 69 0a >hi.<$
0000003$
The fix to | is separate to the fix for ``, but both instances of builtins
using stdout to pipes will be fixed in the next bash package.
--
Eric Blake
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -