From d146ae8ec9f1edb7c944d8412d8ff2b9f1cdd79b Mon Sep 17 00:00:00 2001 From: Angus Salkeld Date: Fri, 14 May 2010 02:08:30 +0000 Subject: [PATCH] cov 10396: prevent a leak under error conditions (lib/sam.c) git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2830 fd59a12c-fef9-0310-b244-a6a79926bd2f --- lib/sam.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/sam.c b/lib/sam.c index 5d00757b..0ed77ef0 100644 --- a/lib/sam.c +++ b/lib/sam.c @@ -338,15 +338,6 @@ cs_error_t sam_data_store ( return (CS_ERR_BAD_HANDLE); } - if (sam_internal_data.user_data_allocated < size) { - if ((new_data = realloc (sam_internal_data.user_data, size)) == NULL) { - return (CS_ERR_NO_MEMORY); - } - - sam_internal_data.user_data_allocated = size; - } else { - new_data = sam_internal_data.user_data; - } if (data == NULL) { size = 0; @@ -386,6 +377,15 @@ cs_error_t sam_data_store ( sam_internal_data.user_data_allocated = 0; sam_internal_data.user_data_size = 0; } else { + if (sam_internal_data.user_data_allocated < size) { + if ((new_data = realloc (sam_internal_data.user_data, size)) == NULL) { + return (CS_ERR_NO_MEMORY); + } + + sam_internal_data.user_data_allocated = size; + } else { + new_data = sam_internal_data.user_data; + } sam_internal_data.user_data = new_data; sam_internal_data.user_data_size = size;