shell: validate create_focus_surface results

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index b3e1c4f..7d7563f 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -525,7 +525,12 @@
 	surface->output = output;
 	surface->configure_private = fsurf;
 
-	fsurf->view = weston_view_create (surface);
+	fsurf->view = weston_view_create(surface);
+	if (fsurf->view == NULL) {
+		weston_surface_destroy(surface);
+		free(fsurf);
+		return NULL;
+	}
 	fsurf->view->output = output;
 
 	weston_surface_set_size(surface, output->width, output->height);
@@ -719,9 +724,17 @@
 	output = get_default_output(shell->compositor);
 	if (ws->fsurf_front == NULL && (from || to)) {
 		ws->fsurf_front = create_focus_surface(shell->compositor, output);
-		ws->fsurf_back = create_focus_surface(shell->compositor, output);
+		if (ws->fsurf_front == NULL)
+			return;
 		ws->fsurf_front->view->alpha = 0.0;
+
+		ws->fsurf_back = create_focus_surface(shell->compositor, output);
+		if (ws->fsurf_back == NULL) {
+			focus_surface_destroy(ws->fsurf_front);
+			return;
+		}
 		ws->fsurf_back->view->alpha = 0.0;
+
 		focus_surface_created = true;
 	} else {
 		wl_list_remove(&ws->fsurf_front->view->layer_link);