#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

_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to