Fix some json schema validation bugs

There were a couple of places where we would add null objects when
they were not allowed.  Fix them.

Change-Id: I7c4c12ea1fa2913014e79603995267a9e560e288
Signed-off-by: Ed Tanous <etanous@nvidia.com>
diff --git a/sections/cper-section-ia32x64.c b/sections/cper-section-ia32x64.c
index 8f84c11..2206d2a 100644
--- a/sections/cper-section-ia32x64.c
+++ b/sections/cper-section-ia32x64.c
@@ -130,10 +130,14 @@
 	void *cur_pos = (void *)current_context_info;
 	json_object *context_info_array = json_object_new_array();
 	for (int i = 0; i < processor_context_info_num; i++) {
-		json_object_array_add(context_info_array,
-				      cper_ia32x64_processor_context_info_to_ir(
-					      current_context_info, &cur_pos,
-					      &remaining_size));
+		json_object *context_info =
+			cper_ia32x64_processor_context_info_to_ir(
+				current_context_info, &cur_pos,
+				&remaining_size);
+		if (context_info == NULL) {
+			context_info = json_object_new_object();
+		}
+		json_object_array_add(context_info_array, context_info);
 		current_context_info =
 			(EFI_IA32_X64_PROCESSOR_CONTEXT_INFO *)cur_pos;
 
@@ -466,11 +470,12 @@
 	EFI_IA32_X64_PROCESSOR_CONTEXT_INFO *context_info, void **cur_pos,
 	UINT32 *remaining_size)
 {
+	json_object *context_info_ir = json_object_new_object();
+
 	if (*remaining_size < sizeof(EFI_IA32_X64_PROCESSOR_CONTEXT_INFO)) {
-		return NULL;
+		return context_info_ir;
 	}
 	*remaining_size -= sizeof(EFI_IA32_X64_PROCESSOR_CONTEXT_INFO);
-	json_object *context_info_ir = json_object_new_object();
 
 	//Register context type.
 	json_object *context_type = integer_to_readable_pair(
@@ -494,8 +499,7 @@
 	json_object *register_array = NULL;
 	if (context_info->RegisterType == EFI_REG_CONTEXT_TYPE_IA32) {
 		if (*remaining_size < sizeof(EFI_CONTEXT_IA32_REGISTER_STATE)) {
-			json_object_put(context_info_ir);
-			return NULL;
+			return context_info_ir;
 		}
 		EFI_CONTEXT_IA32_REGISTER_STATE *register_state =
 			(EFI_CONTEXT_IA32_REGISTER_STATE *)(context_info + 1);
@@ -505,8 +509,7 @@
 		*remaining_size -= sizeof(EFI_CONTEXT_IA32_REGISTER_STATE);
 	} else if (context_info->RegisterType == EFI_REG_CONTEXT_TYPE_X64) {
 		if (*remaining_size < sizeof(EFI_CONTEXT_X64_REGISTER_STATE)) {
-			json_object_put(context_info_ir);
-			return NULL;
+			return context_info_ir;
 		}
 		EFI_CONTEXT_X64_REGISTER_STATE *register_state =
 			(EFI_CONTEXT_X64_REGISTER_STATE *)(context_info + 1);
@@ -518,8 +521,7 @@
 		//No parseable data, just dump as base64 and shift the head to the next item.
 		*cur_pos = (void *)(context_info + 1);
 		if (*remaining_size < context_info->ArraySize) {
-			json_object_put(context_info_ir);
-			return NULL;
+			return context_info_ir;
 		}
 		int32_t encoded_len = 0;
 		char *encoded = base64_encode((UINT8 *)*cur_pos,