From 5dbfdc0b0fec04d670912c4eed179983f98abe8a Mon Sep 17 00:00:00 2001 From: rpcraig 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 --- 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; }