Fix bufferhubd crash in buffer_hub-test

Add some null and valid check in constructors to prevent bufferhubd from
crash when user enter invalid params.

Test: "atest frameworks/native/libs/vr/libbufferhub/buffer_hub-test.cpp#TestCreateBufferHubBufferFails"
and check "adb logcat | grep bufferhub"
No crashing reports.
atest buffer_hub-test: passed
Fix: 118624156

Change-Id: I56e83808f38ab146f1fc61d1b736dd0be640503d
diff --git a/services/vr/bufferhubd/buffer_channel.cpp b/services/vr/bufferhubd/buffer_channel.cpp
index d5e6dfb..bccfe67 100644
--- a/services/vr/bufferhubd/buffer_channel.cpp
+++ b/services/vr/bufferhubd/buffer_channel.cpp
@@ -25,9 +25,13 @@
                              uint32_t width, uint32_t height,
                              uint32_t layer_count, uint32_t format,
                              uint64_t usage, size_t user_metadata_size)
-    : BufferHubChannel(service, buffer_id, buffer_id, kDetachedBufferType),
-      buffer_node_(std::make_shared<BufferNode>(
-          width, height, layer_count, format, usage, user_metadata_size)) {
+    : BufferHubChannel(service, buffer_id, buffer_id, kDetachedBufferType) {
+  buffer_node_ = std::make_shared<BufferNode>(
+      width, height, layer_count, format, usage, user_metadata_size);
+  if (!buffer_node_->IsValid()) {
+    ALOGE("BufferChannel::BufferChannel: Failed to create BufferNode.");
+    return;
+  }
   client_state_mask_ = buffer_node_->AddNewActiveClientsBitToMask();
 }
 
diff --git a/services/vr/bufferhubd/buffer_node.cpp b/services/vr/bufferhubd/buffer_node.cpp
index f8ec59d..e74a21f 100644
--- a/services/vr/bufferhubd/buffer_node.cpp
+++ b/services/vr/bufferhubd/buffer_node.cpp
@@ -34,6 +34,10 @@
   }
 
   metadata_ = BufferHubMetadata::Create(user_metadata_size);
+  if (!metadata_.IsValid()) {
+    ALOGE("BufferNode::BufferNode: Failed to allocate metadata.");
+    return;
+  }
   InitializeMetadata();
 }