Commit 4fdb83e
authored
xds/rbac: avoid nil deref on unset CidrRange prefix_len (#9250)
`newRemoteIPMatcher` and `newLocalIPMatcher` build the CIDR string from
`cidrRange.PrefixLen.Value`, dereferencing the `PrefixLen` wrapper field
directly. An RBAC policy from the control plane whose
`destination_ip`/`direct_remote_ip`/`source_ip`/`remote_ip` CidrRange
sets `address_prefix` but leaves `prefix_len` unset makes `PrefixLen ==
nil`, so `NewChainEngine` panics while the resource is parsed. Nothing
recovers on the xdsclient decode path, so the process goes down.
RELEASE NOTES:
- xds/rbac: Fix a potential panic when parsing a CIDR range that does
not contain a prefix length.1 parent 89d4d61 commit 4fdb83e
2 files changed
Lines changed: 38 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
365 | 365 | | |
366 | 366 | | |
367 | 367 | | |
368 | | - | |
| 368 | + | |
369 | 369 | | |
370 | 370 | | |
371 | 371 | | |
| |||
391 | 391 | | |
392 | 392 | | |
393 | 393 | | |
394 | | - | |
| 394 | + | |
395 | 395 | | |
396 | 396 | | |
397 | 397 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
300 | 300 | | |
301 | 301 | | |
302 | 302 | | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
303 | 339 | | |
304 | 340 | | |
305 | 341 | | |
| |||
0 commit comments