From 5dbfdc0b0fec04d670912c4eed179983f98abe8a Mon Sep 17 00:00:00 2001
From: rpcraig <rpcraig@tycho.ncsc.mil>
Date: Tue, 23 Oct 2012 11:03:47 -0400
Subject: [PATCH] Add double free protection to checkseapp.

A double free error occurs when building with non glibc
devices. The hdestroy() function frees all comparison
keys internally in these cases. So avoid an explicit
call to free().

Change-Id: If9c5dc1a969605cd1eeb9218de02a9f8dbbd3ae1
Signed-off-by: rpcraig <rpcraig@tycho.ncsc.mil>
---
 check_seapp/check_seapp.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/check_seapp/check_seapp.c b/check_seapp/check_seapp.c
index 93ecb2fe1..eab4c3553 100644
--- a/check_seapp/check_seapp.c
+++ b/check_seapp/check_seapp.c
@@ -428,8 +428,11 @@ static void rule_map_free(rule_map *rm, rule_map_switch s) {
 		free(m->data);
 	}
 
+/* hdestroy() frees comparsion keys for non glibc */
+#ifdef __GLIBC__
 	if(s == rule_map_destroy_key && rm->key)
 		free(rm->key);
+#endif
 
 	free(rm);
 }
@@ -778,7 +781,10 @@ static void rule_add(rule_map *rm) {
 			 */
 			preserved_key = tmp->r->key;
 			rule_map_free(tmp->r, rule_map_preserve_key);
+/*  hdestroy() frees comparsion keys for non glibc */
+#ifdef __GLIBC__
 			free(rm->key);
+#endif
 			rm->key = preserved_key;
 			tmp->r = rm;
 		}
-- 
GitLab