protect invalid guid in etcd

This commit is contained in:
Todd Gruben 2014-06-23 17:51:07 -05:00
parent b3b8c3bc4f
commit 0c2a24d8d8

View file

@ -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
}