Blob Blame History Raw
From ebf8073e904f21fd333f5a74bd3942c3e8840f0e Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Wed, 10 Sep 2014 16:20:04 -0400
Subject: [PATCH 12/18] Don't reuse a pointer to static data and free
 conditionally.

Instead, use a second pointer and free that, because poor covscan can't
figure out what's going on.

Signed-off-by: Peter Jones <pjones@redhat.com>
---
 src/lib/unparse_path.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/lib/unparse_path.c b/src/lib/unparse_path.c
index 431dc06..5a69fde 100644
--- a/src/lib/unparse_path.c
+++ b/src/lib/unparse_path.c
@@ -325,6 +325,7 @@ unparse_media_hard_drive_path(char *buffer, size_t buffer_size,
 	char text_uuid[40], *sig=text_uuid;
 	char a[16], b[16], c[16];
 	int rc = 0;
+	char *sig_allocated = NULL;
 
 	switch (hd->signature_type) {
 	case 0x00:
@@ -339,9 +340,11 @@ unparse_media_hard_drive_path(char *buffer, size_t buffer_size,
 			return -1;
 		break;
 	case 0x02: /* GPT */
-		rc = efi_guid_to_str((efi_guid_t *)hd->signature, &sig);
+		rc = efi_guid_to_str((efi_guid_t *)hd->signature,
+					&sig_allocated);
 		if (rc < 0)
 			return rc;
+		sig = sig_allocated;
 		break;
 	default:
 		return 0;
@@ -352,8 +355,8 @@ unparse_media_hard_drive_path(char *buffer, size_t buffer_size,
 		       get(b, hd->start),
 		       get(c, hd->size),
 		       sig);
-	if (hd->signature_type == 0x02)
-		free(sig);
+	if (sig_allocated)
+		free(sig_allocated);
 	return rc;
 }
 
-- 
1.9.3