From 0c2a24d8d8c0ddb212e5ceaaa39b24409203afcd Mon Sep 17 00:00:00 2001 From: Todd Gruben Date: Mon, 23 Jun 2014 17:51:07 -0500 Subject: [PATCH] protect invalid guid in etcd --- core/etcd.go | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/core/etcd.go b/core/etcd.go index eb808580f..b2ac1b0fb 100644 --- a/core/etcd.go +++ b/core/etcd.go @@ -38,6 +38,11 @@ func (self *TopologyMapper) Setup() { } //need to lock the world for _, node := range flatten(resp.Node) { + if len(node.Value) < 5 { + log.Println("No GUID skipping") + log.Println(spew.Sdump(node)) + continue + } err := self.handlenode(node) if err != nil { log.Println(err) @@ -63,6 +68,11 @@ func (self *TopologyMapper) Run() { for resp := range receiver { switch resp.Action { case "set": + if len(resp.Node.Value) < 5 { + log.Println("No GUID skipping set") + log.Println(spew.Sdump(resp)) + continue + } self.handlenode(resp.Node) case "delete": self.remove_fragment(resp.Node) @@ -216,7 +226,9 @@ func (self *TopologyMapper) handlenode(node *etcd.Node) error { if bits[8] != "process" { return errors.New("no process") } + process_uuid, err = util.ParseGUID(node.Value) + if err != nil { return err } @@ -425,6 +437,12 @@ func (self *ProcessMapper) Run() { response, err := self.service.Etcd.Get(path, false, true) for _, node := range flatten(response.Node) { + if len(node.Value) < 5 { + log.Println("No GUID skipping run") + log.Println(spew.Sdump(node)) + continue + } + err := self.handlenode(node) if err != nil { spew.Dump(node) @@ -444,7 +462,12 @@ func (self *ProcessMapper) Run() { for response = range receiver { switch response.Action { case "set": - self.handlenode(response.Node) + if len(response.Node.Value) > 5 { + self.handlenode(response.Node) + } else { + log.Println("No GUID skipping") + log.Println(spew.Sdump(response)) + } } // TODO: handle deletes }