• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ovn-kubernetes / ovn-kubernetes / 24220727612
58%

Build:
DEFAULT BRANCH: master
Ran 10 Apr 2026 01:25AM UTC
Jobs 1
Files 323
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

09 Apr 2026 07:19PM UTC coverage: 57.711% (+0.08%) from 57.636%
24220727612

push

github

jcaamano
Fix nil pointer panic in ParseNetConf for conflist configs

The cluster manager panics on startup when the cluster contains a
non-OVN NetworkAttachmentDefinition that uses the CNI conflist format
(e.g. a bridge or macvlan NAD with a "plugins" array).

During startup, ClusterManager.Start → nadController.syncAll iterates
every NAD and calls ParseNetConf to determine whether it is
OVN-managed. For non-OVN NADs the expected behavior is to return
ErrorAttachDefNotOvnManaged so the caller can skip them. However, a
variable shadowing bug caused the error to be silently lost for
conflist-format NADs, resulting in a nil pointer dereference.

The bug was in this line:

    confList, err := libcni.ConfListFromBytes(bytes)

The := operator declared a new `err` local to the if-block, shadowing
the outer `err` declared at the top of ParseNetConf. When
parseNetConfList returned (nil, ErrorAttachDefNotOvnManaged), that
error was assigned to the inner `err`. The outer `err` remained nil,
so the nil-check at the end of the function passed, and the code
proceeded to dereference the nil `netconf` pointer at
`netconf.Topology`, causing a SIGSEGV.

The fix changes := to = so that both ConfListFromBytes and
parseNetConfList assign to the outer `err`, allowing the error to
propagate correctly.

Panic stack trace:

  panic: runtime error: invalid memory address or nil pointer dereference
  [signal SIGSEGV: segmentation violation code=0x1 addr=0xe8 pc=0x1be29b3]

  goroutine 7933 [running]:
  github.com/ovn-kubernetes/ovn-kubernetes/go-controller/pkg/config.ParseNetConf({0xc006af0a50, 0x4c, 0x50})
  	/go/src/github.com/openshift/ovn-kubernetes/go-controller/pkg/config/cni.go:104 +0xd3
  github.com/ovn-kubernetes/ovn-kubernetes/go-controller/pkg/util.ParseNetConf(0xc005a61200)
  	/go/src/github.com/openshift/ovn-kubernetes/go-controller/pkg/util/multi_network.go:1504 +0x3c
  github.com/ovn-kubernetes/ovn-kubernetes/go-controller/pkg/util.ParseNADInfo(0xc005a61200)
  	/go/src/g... (continued)

2 of 2 new or added lines in 1 file covered. (100.0%)

196 existing lines in 5 files now uncovered.

49566 of 85886 relevant lines covered (57.71%)

375.35 hits per line

Coverage Regressions

Lines Coverage ∆ File
180
39.53
-0.47% go-controller/pkg/util/net_linux.go
7
65.77
-1.26% go-controller/pkg/ovn/controller/apbroute/external_controller.go
5
74.93
-1.47% go-controller/pkg/ovn/hybrid.go
2
78.33
-0.22% go-controller/pkg/ovn/base_network_controller_pods.go
2
60.78
-3.92% go-controller/pkg/ovn/controller/apbroute/external_controller_pod.go
Jobs
ID Job ID Ran Files Coverage
1 24220727612.1 10 Apr 2026 01:25AM UTC 323
57.71
GitHub Action Run
Source Files on build 24220727612
  • Tree
  • List 323
  • Changed 11
  • Source Changed 0
  • Coverage Changed 11
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 613c1a39 on github
  • Prev Build on master (#24166273870)
  • Next Build on master (#24282338358)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc