diff --git a/cper-parse.c b/cper-parse.c
index 8b62ef6..12eb464 100644
--- a/cper-parse.c
+++ b/cper-parse.c
@@ -221,37 +221,22 @@
 
 	//If a platform ID exists according to the validation bits, then add it.
 	if (header->ValidationBits & 0x1) {
-		char platform_string[GUID_STRING_LENGTH];
-		guid_to_string(platform_string, &header->PlatformID);
-		json_object_object_add(header_ir, "platformID",
-				       json_object_new_string(platform_string));
+		add_guid(header_ir, "platformID", &header->PlatformID);
 	}
 
 	//If a partition ID exists according to the validation bits, then add it.
 	if (header->ValidationBits & 0x4) {
-		char partition_string[GUID_STRING_LENGTH];
-		guid_to_string(partition_string, &header->PartitionID);
-		json_object_object_add(
-			header_ir, "partitionID",
-			json_object_new_string(partition_string));
+		add_guid(header_ir, "partitionID", &header->PartitionID);
 	}
 
 	//Creator ID of the header.
-	char creator_string[GUID_STRING_LENGTH];
-	guid_to_string(creator_string, &header->CreatorID);
-	json_object_object_add(header_ir, "creatorID",
-			       json_object_new_string(creator_string));
-
+	add_guid(header_ir, "creatorID", &header->CreatorID);
 	//Notification type for the header. Some defined types are available.
 	json_object *notification_type = json_object_new_object();
-	char notification_type_string[GUID_STRING_LENGTH];
-	guid_to_string(notification_type_string, &header->NotificationType);
-	json_object_object_add(
-		notification_type, "guid",
-		json_object_new_string(notification_type_string));
+	add_guid(notification_type, "guid", &header->NotificationType);
 
 	//Add the human readable notification type if possible.
-	char *notification_type_readable = "Unknown";
+	const char *notification_type_readable = "Unknown";
 	if (guid_equal(&header->NotificationType,
 		       &gEfiEventNotificationTypeCmcGuid)) {
 		notification_type_readable = "CMC";
@@ -343,11 +328,8 @@
 
 	//Section type (GUID).
 	json_object *section_type = json_object_new_object();
-	char section_type_string[GUID_STRING_LENGTH];
-	guid_to_string(section_type_string, &section_descriptor->SectionType);
-	json_object_object_add(section_type, "data",
-			       json_object_new_string(section_type_string));
 
+	add_guid(section_type, "data", &section_descriptor->SectionType);
 	//Readable section type, if possible.
 	const char *section_type_readable = "Unknown";
 	for (size_t i = 0; i < section_definitions_len; i++) {
@@ -366,10 +348,8 @@
 
 	//If validation bits indicate it exists, add FRU ID.
 	if (section_descriptor->SecValidMask & 0x1) {
-		char fru_id_string[GUID_STRING_LENGTH];
-		guid_to_string(fru_id_string, &section_descriptor->FruId);
-		json_object_object_add(section_descriptor_ir, "fruID",
-				       json_object_new_string(fru_id_string));
+		add_guid(section_descriptor_ir, "fruID",
+			 &section_descriptor->FruId);
 	}
 
 	//If validation bits indicate it exists, add FRU text.
diff --git a/cper-utils.c b/cper-utils.c
index 11fdbcb..c37796d 100644
--- a/cper-utils.c
+++ b/cper-utils.c
@@ -384,12 +384,18 @@
 }
 
 //Helper function to convert an EDK EFI GUID into a string for intermediate use.
-void guid_to_string(char *out, EFI_GUID *guid)
+int guid_to_string(char *out, size_t out_len, EFI_GUID *guid)
 {
-	sprintf(out, "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
-		guid->Data1, guid->Data2, guid->Data3, guid->Data4[0],
-		guid->Data4[1], guid->Data4[2], guid->Data4[3], guid->Data4[4],
-		guid->Data4[5], guid->Data4[6], guid->Data4[7]);
+	size_t len = snprintf(
+		out, out_len,
+		"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", guid->Data1,
+		guid->Data2, guid->Data3, guid->Data4[0], guid->Data4[1],
+		guid->Data4[2], guid->Data4[3], guid->Data4[4], guid->Data4[5],
+		guid->Data4[6], guid->Data4[7]);
+	if (len != out_len) {
+		return -1;
+	}
+	return len;
 }
 
 //Helper function to convert a string into an EDK EFI GUID.
@@ -446,3 +452,15 @@
 			json_object_new_string_len(str, fru_text_len));
 	}
 }
+
+void add_guid(json_object *ir, const char *field_name, EFI_GUID *guid)
+{
+	char platform_string[GUID_STRING_LENGTH + 1];
+	if (!guid_to_string(platform_string, sizeof(platform_string), guid)) {
+		return;
+	}
+	json_object_object_add(
+		ir, field_name,
+		json_object_new_string_len(platform_string,
+					   sizeof(platform_string) - 1));
+}
diff --git a/include/libcper/cper-utils.h b/include/libcper/cper-utils.h
index 1003c38..e5ec8d4 100644
--- a/include/libcper/cper-utils.h
+++ b/include/libcper/cper-utils.h
@@ -1,7 +1,7 @@
 #ifndef CPER_UTILS_H
 #define CPER_UTILS_H
 
-#define GUID_STRING_LENGTH 48
+#define GUID_STRING_LENGTH 36
 #define TIMESTAMP_LENGTH   26
 
 #ifdef __cplusplus
@@ -57,13 +57,15 @@
 int timestamp_to_string(char *out, int out_len,
 			EFI_ERROR_TIME_STAMP *timestamp);
 void string_to_timestamp(EFI_ERROR_TIME_STAMP *out, const char *timestamp);
-void guid_to_string(char *out, EFI_GUID *guid);
+int guid_to_string(char *out, size_t out_len, EFI_GUID *guid);
 void string_to_guid(EFI_GUID *out, const char *guid);
 int guid_equal(EFI_GUID *a, EFI_GUID *b);
 
 void add_untrusted_string(json_object *ir, const char *field_name,
 			  const char *str, int len);
 
+void add_guid(json_object *ir, const char *field_name, EFI_GUID *guid);
+
 //The available severity types for CPER.
 extern const char *CPER_SEVERITY_TYPES[4];
 
diff --git a/sections/cper-section-firmware.c b/sections/cper-section-firmware.c
index 78f04d0..327d70b 100644
--- a/sections/cper-section-firmware.c
+++ b/sections/cper-section-firmware.c
@@ -35,10 +35,7 @@
 		json_object_new_uint64(firmware_error->RecordId));
 
 	//Record GUID.
-	char record_id_guid[GUID_STRING_LENGTH];
-	guid_to_string(record_id_guid, &firmware_error->RecordIdGuid);
-	json_object_object_add(section_ir, "recordIDGUID",
-			       json_object_new_string(record_id_guid));
+	add_guid(section_ir, "recordIDGUID", &firmware_error->RecordIdGuid);
 
 	return section_ir;
 }
diff --git a/sections/cper-section-ia32x64.c b/sections/cper-section-ia32x64.c
index c127e93..c04bed1 100644
--- a/sections/cper-section-ia32x64.c
+++ b/sections/cper-section-ia32x64.c
@@ -148,13 +148,10 @@
 	EFI_IA32_X64_PROCESS_ERROR_INFO *error_info)
 {
 	json_object *error_info_ir = json_object_new_object();
+	json_object *type = json_object_new_object();
 
 	//Error structure type (as GUID).
-	char error_type[GUID_STRING_LENGTH];
-	guid_to_string(error_type, &error_info->ErrorType);
-	json_object *type = json_object_new_object();
-	json_object_object_add(type, "guid",
-			       json_object_new_string(error_type));
+	add_guid(type, "guid", &error_info->ErrorType);
 
 	//Get the error structure type as a readable string.
 	const char *readable_type = "Unknown";
