From: Patrick G. Bridges Date: Thu, 1 Mar 2012 17:41:50 +0000 (-0700) Subject: Added additional error checking on configurations to curses console.\n X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=commitdiff_plain;h=eb6d07ffafa4e305a4353224706b76496c3ea7a0;hp=db0b003cd20ee08be24c6f3e7f2b5cc578d57aae;p=palacios.git Added additional error checking on configurations to curses console.\n --- diff --git a/palacios/src/devices/curses_cons.c b/palacios/src/devices/curses_cons.c index 1447bd5..742180a 100644 --- a/palacios/src/devices/curses_cons.c +++ b/palacios/src/devices/curses_cons.c @@ -215,16 +215,30 @@ static struct v3_device_ops dev_ops = { static int cons_init(struct v3_vm_info * vm, v3_cfg_tree_t * cfg) { struct cons_state * state = NULL; - v3_cfg_tree_t * frontend_cfg = v3_cfg_subtree(cfg, "frontend"); - const char * frontend_tag = v3_cfg_val(frontend_cfg, "tag"); - struct vm_device * frontend = v3_find_dev(vm, frontend_tag); + v3_cfg_tree_t * frontend_cfg; + const char * frontend_tag; + struct vm_device * frontend; char * dev_id = v3_cfg_val(cfg, "ID"); /* read configuration */ - V3_ASSERT(frontend_cfg); - V3_ASSERT(frontend_tag); - V3_ASSERT(frontend); + frontend_cfg = v3_cfg_subtree(cfg, "frontend"); + if (!frontend_cfg) { + PrintError("No frontend specification for curses console.\n"); + return -1; + } + + frontend_tag = v3_cfg_val(frontend_cfg, "tag"); + if (!frontend_tag) { + PrintError("No frontend device tag specified for curses console.\n"); + return -1; + } + frontend = v3_find_dev(vm, frontend_tag); + if (!frontend) { + PrintError("Could not find frontend device %s for curses console.\n", + frontend_tag); + return -1; + } /* allocate state */ state = (struct cons_state *)V3_Malloc(sizeof(struct cons_state));