From eb9b830766044475277a590dbf8d213b77b62188 Mon Sep 17 00:00:00 2001 From: Andrew Evans Date: Mon, 24 Jan 2011 17:01:53 -0800 Subject: [PATCH] bridge: Check for null ofproto_controller_info pointer. This fixes a bug I introduced in commit bffc0589. Reported-by: Bryan Fulton Bug #4474. --- vswitchd/bridge.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c index 1065d6eaf..5339154a5 100644 --- a/vswitchd/bridge.c +++ b/vswitchd/bridge.c @@ -1342,13 +1342,20 @@ bridge_refresh_controller_status(const struct bridge *br) ofproto_get_ofproto_controller_info(br->ofproto, &info); OVSREC_CONTROLLER_FOR_EACH(cfg, idl) { - struct ofproto_controller_info *cinfo = shash_find_data(&info, cfg->target); - - ovsrec_controller_set_is_connected(cfg, cinfo->is_connected); - ovsrec_controller_set_role(cfg, nx_role_to_str(cinfo->role)); - ovsrec_controller_set_status(cfg, (char **) cinfo->pairs.keys, - (char **) cinfo->pairs.values, - cinfo->pairs.n); + struct ofproto_controller_info *cinfo = + shash_find_data(&info, cfg->target); + + if (cinfo) { + ovsrec_controller_set_is_connected(cfg, cinfo->is_connected); + ovsrec_controller_set_role(cfg, nx_role_to_str(cinfo->role)); + ovsrec_controller_set_status(cfg, (char **) cinfo->pairs.keys, + (char **) cinfo->pairs.values, + cinfo->pairs.n); + } else { + ovsrec_controller_set_is_connected(cfg, false); + ovsrec_controller_set_role(cfg, NULL); + ovsrec_controller_set_status(cfg, NULL, NULL, 0); + } } ofproto_free_ofproto_controller_info(&info); -- 2.43.0