diff --git a/libdrm/intel/intel_bufmgr_gem.c b/libdrm/intel/intel_bufmgr_gem.c
index 70d0c85..f72994f 100644
--- a/libdrm/intel/intel_bufmgr_gem.c
+++ b/libdrm/intel/intel_bufmgr_gem.c
@@ -302,6 +302,9 @@ drm_intel_add_validate_buffer(drm_intel_bo *bo)
 static int
 drm_intel_setup_reloc_list(drm_intel_bo *bo)
 {
+    if ( bo == NULL ) {
+        return -1;
+    }
     drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *)bo;
     drm_intel_bufmgr_gem *bufmgr_gem = (drm_intel_bufmgr_gem *)bo->bufmgr;
 
@@ -309,6 +312,9 @@ drm_intel_setup_reloc_list(drm_intel_bo *bo)
 			    sizeof(struct drm_i915_gem_relocation_entry));
     bo_gem->reloc_target_bo = malloc(bufmgr_gem->max_relocs *
 				     sizeof(drm_intel_bo *));
+    if ( (bo_gem->relocs == NULL) || (bo_gem->reloc_target_bo == NULL) ) {
+        return -1;
+    }
 
     return 0;
 }
@@ -1389,13 +1395,16 @@ drm_intel_gem_bo_disable_reuse(drm_intel_bo *bo)
 drm_intel_bufmgr *
 drm_intel_bufmgr_gem_init(int fd, int batch_size)
 {
-    drm_intel_bufmgr_gem *bufmgr_gem;
+    drm_intel_bufmgr_gem *bufmgr_gem = NULL;
     struct drm_i915_gem_get_aperture aperture;
     drm_i915_getparam_t gp;
     int ret, i;
     unsigned long size;
 
     bufmgr_gem = calloc(1, sizeof(*bufmgr_gem));
+    if (bufmgr_gem == NULL) {
+        return NULL;
+    }
     bufmgr_gem->fd = fd;
 
     if (pthread_mutex_init(&bufmgr_gem->lock, NULL) != 0) {
