From fcd05d6c9b6bfefd48f6e48a9c1735a6d81e6d92 Mon Sep 17 00:00:00 2001 From: Lesterpig Date: Tue, 3 May 2016 10:54:07 +0200 Subject: [PATCH] [gui][c] Fix unmarshal when corrupted dfss json Fix #10 --- dfssc/common/file.go | 5 +++++ gui/showcontract/showcontract.go | 5 ++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/dfssc/common/file.go b/dfssc/common/file.go index 09d25f2..f19cb76 100644 --- a/dfssc/common/file.go +++ b/dfssc/common/file.go @@ -2,6 +2,7 @@ package common import ( "encoding/json" + "errors" "dfss/dfssp/contract" ) @@ -15,5 +16,9 @@ func UnmarshalDFSSFile(data []byte) (*contract.JSON, error) { return nil, err } + if c.File == nil { + return nil, errors.New("empty file description") + } + return c, nil } diff --git a/gui/showcontract/showcontract.go b/gui/showcontract/showcontract.go index 64602a5..0da33bf 100644 --- a/gui/showcontract/showcontract.go +++ b/gui/showcontract/showcontract.go @@ -2,9 +2,9 @@ package showcontract import ( - "encoding/json" "io/ioutil" + "dfss/dfssc/common" "dfss/dfssp/contract" "github.com/visualfc/goqt/ui" ) @@ -49,8 +49,7 @@ func Load(filename string) *contract.JSON { return nil } - contract := new(contract.JSON) - err = json.Unmarshal(data, contract) + contract, err := common.UnmarshalDFSSFile(data) if err != nil { return nil } -- GitLab