Skip to content

Commit d57549b

Browse files
authored
Fix panic if module by prefix is not found in Find() (#252)
Previously, if FindModuleByPrefix() returns nil in Find(), it would continue to call module() with nil, resulting in a nil pointer dereference panic when trying to call ParentNode() from RootNode(). The fix is to return an error if FindModuleByPrefix() returns nil. Fixes #251
1 parent 944052f commit d57549b

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

pkg/yang/entry.go

+8-2
Original file line numberDiff line numberDiff line change
@@ -1322,11 +1322,17 @@ func (e *Entry) Find(name string) *Entry {
13221322
e = e.Parent
13231323
}
13241324
if prefix, _ := getPrefix(parts[0]); prefix != "" {
1325-
m := module(FindModuleByPrefix(contextNode, prefix))
1326-
if m == nil {
1325+
mod := FindModuleByPrefix(contextNode, prefix)
1326+
if mod == nil {
13271327
e.addError(fmt.Errorf("cannot find module giving prefix %q within context entry %q", prefix, e.Path()))
13281328
return nil
13291329
}
1330+
m := module(mod)
1331+
if m == nil {
1332+
e.addError(fmt.Errorf("cannot find which module %q belongs to within context entry %q",
1333+
mod.NName(), e.Path()))
1334+
return nil
1335+
}
13301336
if m != e.Node.(*Module) {
13311337
e = ToEntry(m)
13321338
}

0 commit comments

Comments
 (0)