screenshooter: check for NULL malloc and fix memleaks

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
diff --git a/src/screenshooter.c b/src/screenshooter.c
index 26e503c..1d1c1b3 100644
--- a/src/screenshooter.c
+++ b/src/screenshooter.c
@@ -190,7 +190,7 @@
 	}
 	if (!wl_shm_buffer_get(buffer->resource))
 		return;
-	
+
 	buffer->shm_buffer = wl_shm_buffer_get(buffer->resource);
 	buffer->width = wl_shm_buffer_get_width(buffer->shm_buffer);
 	buffer->height = wl_shm_buffer_get_height(buffer->shm_buffer);
@@ -428,6 +428,11 @@
 
 	recorder = malloc(sizeof *recorder);
 
+	if (recorder == NULL) {
+		weston_log("%s: out of memory\n", __func__);
+		return;
+	}
+
 	stride = output->current_mode->width;
 	size = stride * 4 * output->current_mode->height;
 	recorder->frame = zalloc(size);
@@ -454,6 +459,9 @@
 		break;
 	default:
 		weston_log("unknown recorder format\n");
+		free(recorder->rect);
+		free(recorder->tmpbuf);
+		free(recorder->frame);
 		free(recorder);
 		return;
 	}
@@ -463,6 +471,9 @@
 
 	if (recorder->fd < 0) {
 		weston_log("problem opening output file %s: %m\n", filename);
+		free(recorder->rect);
+		free(recorder->tmpbuf);
+		free(recorder->frame);
 		free(recorder);
 		return;
 	}