Ensure mount/auth tables are not nil when triggering rollback

During setup or teardown there could be a race condition so check for it
to avoid a potential panic.
This commit is contained in:
Jeff Mitchell 2016-07-18 22:02:39 -04:00
parent 0bcf77765f
commit 80a688c059
1 changed files with 12 additions and 4 deletions

View File

@ -192,13 +192,21 @@ func (c *Core) startRollback() error {
ret := []*MountEntry{}
c.mountsLock.RLock()
defer c.mountsLock.RUnlock()
for _, entry := range c.mounts.Entries {
ret = append(ret, entry)
// During teardown/setup after a leader change or unseal there could be
// something racy here so make sure the table isn't nil
if c.mounts != nil {
for _, entry := range c.mounts.Entries {
ret = append(ret, entry)
}
}
c.authLock.RLock()
defer c.authLock.RUnlock()
for _, entry := range c.auth.Entries {
ret = append(ret, entry)
// During teardown/setup after a leader change or unseal there could be
// something racy here so make sure the table isn't nil
if c.auth != nil {
for _, entry := range c.auth.Entries {
ret = append(ret, entry)
}
}
return ret
}