From ee21768f34299d5b95f472d576a07fbf771557ee Mon Sep 17 00:00:00 2001 From: Jarek Kowalski Date: Sat, 9 Apr 2016 18:30:21 -0700 Subject: [PATCH] dir parser --- fs/dir_json.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/fs/dir_json.go b/fs/dir_json.go index efa369b90..4daea14e4 100644 --- a/fs/dir_json.go +++ b/fs/dir_json.go @@ -201,6 +201,33 @@ func (dr *directoryReader) ReadNext() (Entry, error) { return &de, nil } + + // Expect ']' + t, err := dr.decoder.Token() + if err != nil { + return nil, fmt.Errorf("invalid directory data: %v", err) + } + + if t != json.Delim(']') { + return nil, fmt.Errorf("invalid directory data: expected ']', got %v", t) + } + + // Expect '}' + t, err = dr.decoder.Token() + if err != nil { + return nil, fmt.Errorf("invalid directory data: %v", err) + } + + if t != json.Delim('}') { + return nil, fmt.Errorf("invalid directory data: expected ']', got %v", t) + } + + // Expect end of file + t, err = dr.decoder.Token() + if err != io.EOF { + return nil, fmt.Errorf("invalid directory data: expected EOF, got %v", t) + } + return nil, io.EOF }