[Haskell-cafe] More on the random idea

Isaac Dupree isaacdupree at charter.net
Sun May 27 07:23:44 EDT 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Donald Bruce Stewart wrote:
> I've listed the mechanisms we use, and exploits that have been thought
> of, or discovered, over the years, on the page:
> 
>     http://haskell.org/haskellwiki/Safely_running_untrusted_Haskell_code

The exception handling behavior is somewhat odd, I don't even understand
it fully. Here's a lambdabot session... why is the behavior of the
"iter" versions different from the explicitly iterated "error"?

isaacd > error "hi"
lambdabot  Exception: hi
isaacd > error (error "hi")
lambdabot  Exception: hi
isaacd > error ('l':(error "hi"))
lambdabot  Exception
isaacd > fix error
lambdabot  Exception: <<loop>>
isaacd > fix (error . ('a':))
lambdabot  Exception
isaacd > fix (error . (replicate 5000 'a'++))
[ long lines clipped by me: ]
lambdabot  Exception: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa[...]
lambdabot aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa[...]
lambdabot aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa[...]
lambdabot aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa[...]
lambdabot aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
isaacd > error (error (error "hi")) :: String
lambdabot  Exception: hi
isaacd >   error.error.error .  error.error.error .  error.error.error .
 error.error.error .  error.error.error .  error.error.error .
error.error.error .  error.error.error .  error.error.error .
error.error.error .  error.error.error .  error.error.error .
error.error.error .  error.error.error .  error.error.error .
error.error.error .  error.error.error .  error.error.error .
error.error.error $ "hi"
lambdabot  Exception: hi
isaacd > let iter 0 _ = id; iter n f = f . iter (n - 1) f in iter 0
error "hi"
lambdabot  "hi"
isaacd > let iter 0 _ = id; iter n f = f . iter (n - 1) f in iter 1
error "hi"
lambdabot  Exception: hi
isaacd > let iter 0 _ = id; iter n f = f . iter (n - 1) f in iter 2
error "hi"
lambdabot  Exception
isaacd > let iter 0 _ = id; iter n f = f . iter (n - 1) f in iter 1001
error "hi"
lambdabot  Exception
isaacd > let iter 0 _ = id; iter n f = f . iter (n - 1) f in iter 5
('L':) "hi"
lambdabot  "LLLLLhi"


Isaac
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFGWWo/HgcxvIWYTTURAhYdAJsExQDI9191Q1y9u66H+gpWVlJv2ACfVEhZ
IQWCLIgqWksbEcZ+g7gsjR0=
=d4Lk
-----END PGP SIGNATURE-----


More information about the Haskell-Cafe mailing list