on master help sign in
Tighten up the top-level json parser to be safer
5c1fd3dBryan O'Sullivan
Data/Aeson/Parser.hs+4−5
@@ -40,11 +40,10 @@ import qualified Data.ByteString.Unsafe as B
40-- an array.
40-- an array.
41json :: Parser Value
41json :: Parser Value
42json = do
42json = do
43− c <- skipSpace *> anyChar
43+ c <- skipSpace *> satisfy (`B8.elem` "{[")
44− case c of
44+ if c == '{'
45− '{' -> object_
45+ then object_
46− '[' -> array_
46+ else array_
47− _ -> fail "root value is not an object or array"
48
47
49object_ :: Parser Value
48object_ :: Parser Value
50object_ = {-# SCC "object_" #-} do
49object_ = {-# SCC "object_" #-} do