When the "ovn-chassis-mac-mappings" had wrong format it would crash the ovn-controller as it tried to deref NULL pointer.
Add check if the token is a valid pointer, if not log warning and skip this value. Reported-at: https://bugzilla.redhat.com/2082341 Signed-off-by: Ales Musil <amu...@redhat.com> --- controller/physical.c | 6 ++++++ tests/ovn-controller.at | 28 ++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/controller/physical.c b/controller/physical.c index 734444320..71e22cbf0 100644 --- a/controller/physical.c +++ b/controller/physical.c @@ -426,6 +426,12 @@ populate_remote_chassis_macs(const struct sbrec_chassis *my_chassis, char *save_ptr2 = NULL; char *chassis_mac_bridge = strtok_r(token, ":", &save_ptr2); char *chassis_mac_str = strtok_r(NULL, "", &save_ptr2); + if(!chassis_mac_str) { + VLOG_WARN("Parsing of ovn-chassis-mac-mappings failed for: " + "\"%s\", the correct format is \"br-name1:MAC1\".", + token); + continue; + } struct remote_chassis_mac *remote_chassis_mac = NULL; remote_chassis_mac = xmalloc(sizeof *remote_chassis_mac); hmap_insert(&remote_chassis_macs, &remote_chassis_mac->hmap_node, diff --git a/tests/ovn-controller.at b/tests/ovn-controller.at index 88ec2f269..dcadab1f3 100644 --- a/tests/ovn-controller.at +++ b/tests/ovn-controller.at @@ -2154,3 +2154,31 @@ AT_CHECK_UNQUOTED([echo $lflow_run_1], [0], [$lflow_run_2 OVN_CLEANUP([hv1]) AT_CLEANUP + + +AT_SETUP([ovn-controller - check ovn-chassis-mac-mappings]) + +ovn_start + +net_add n1 +sim_add hv1 +as hv1 +ovs-vsctl add-br br-phys +ovn_attach n1 br-phys 192.168.0.1 + +pid=$(cat hv1/ovn-controller.pid) + +# Add chassis with some ovn-chassis-mac-mappings +AT_CHECK([ovn-sbctl chassis-add foo geneve 127.0.0.2]) +AT_CHECK([ovn-sbctl set chassis foo other_config:ovn-chassis-mac-mappings="invalid1,invalid2,br1:00:00:00:00:00:00"]) +AT_CHECK([ovn-nbctl --wait=hv sync]) + +# Check if ovn-controller is still alive +AT_CHECK([ps $pid], [0], [ignore]) +# Check if we got warnings for invalid +AT_CHECK([grep "Parsing of ovn-chassis-mac-mappings failed" hv1/ovn-controller.log | grep -q invalid1]) +AT_CHECK([grep "Parsing of ovn-chassis-mac-mappings failed" hv1/ovn-controller.log | grep -q invalid2]) +AT_CHECK([grep "Parsing of ovn-chassis-mac-mappings failed" hv1/ovn-controller.log | grep -q br1], [1]) + +OVN_CLEANUP([hv1]) +AT_CLEANUP -- 2.35.1 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev