[GHC] #7161: hSetNewlineMode and hSetEncoding can be performed on closed and semi-closed handles
GHC
cvs-ghc at haskell.org
Sun Aug 19 00:57:51 CEST 2012
#7161: hSetNewlineMode and hSetEncoding can be performed on closed and semi-closed
handles
------------------------------+---------------------------------------------
Reporter: duncan | Owner:
Type: bug | Status: new
Priority: normal | Component: libraries/base
Version: 7.6.1-rc1 | Keywords:
Os: Unknown/Multiple | Architecture: Unknown/Multiple
Failure: None/Unknown | Testcase:
Blockedby: | Blocking:
Related: |
------------------------------+---------------------------------------------
The `hSetNewlineMode` and `hSetEncoding` functions from `GHC/IO/Handle.hs`
do not check that the Handle is in an open mode. It is possible to use
them on closed handles. hSetEncoding on a closed Handle triggers a
segfault. Similarly, the operations are also both possible on semi-closed
handles, and given the way hGetContents is implemented, this will affect
the result of hGetContents which is clearly against the intention of the
hGetContents/semi-closed stuff.
Both functions use the `withAllHandles__` helper. Unlike similar helpers
like `wantReadableHandle_` this one doesn't do any handle mode checking.
Additionally, `hSetBuffering` and `hSetBinary` mode also use the
`withAllHandles__` pattern and don't obviously check for an open handle
but I've not verified this.
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7161>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the Glasgow-haskell-bugs
mailing list