mueval-0.3.1: mueval.cabal
name: mueval
version: 0.3.1
license: BSD3
license-file: LICENSE
author: Gwern
maintainer: Gwern <gwern0@gmail.com>
category: Development, Language
synopsis: Safely evaluate Haskell expressions
description: Mueval is a Haskell interpreter. It
uses the GHC API to evaluate arbitrary Haskell expressions.
Importantly, mueval takes many precautions to defang and avoid "evil"
code. It uses resource limits, whitelisted modules,
special Show instances for IO, threads, changes of directory, and so
on to sandbox the Haskell code. (It is much like Lambdabot's famous
evaluation functionality.)
.
Currently there is a major hole in Mueval: it is possible use a function
without importing it, which allows the module whitelisting to be bypassed,
and hence, unsafePerformIO and its various type-breaking friends can be used
to do arbitrary things. Mueval uses a blacklist to avoid the most naive and obvious
dangerous function imports, but this is a very weak mechanism and cannot be relied
upon.
.
Until this hole is fixed, Mueval should *not* be used on potentially hostile input.
.
Mueval is currently POSIX-only.
homepage: http://code.haskell.org/mubot/
build-type: Simple
Cabal-Version: >= 1.2
Tested-with: GHC==6.8.2
Extra-source-files: build.sh, tests.sh
Library
exposed-modules: Mueval.Context, Mueval.Interpreter,
Mueval.ParseArgs, Mueval.Resources
build-Depends: base, directory, mtl, unix, hint>=0.2.2, show
ghc-options: -Wall -static
Executable mueval
main-is: mueval.hs
build-depends: base
ghc-options: -Wall -threaded -static