Przeglądaj źródła

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
Angus Salkeld 15 lat temu
rodzic
commit
d146ae8ec9
1 zmienionych plików z 9 dodań i 9 usunięć
  1. 9 9
      lib/sam.c

+ 9 - 9
lib/sam.c

@@ -338,15 +338,6 @@ cs_error_t sam_data_store (
 		return (CS_ERR_BAD_HANDLE);
 		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) {
 	if (data == NULL) {
 		size = 0;
 		size = 0;
@@ -386,6 +377,15 @@ cs_error_t sam_data_store (
 		sam_internal_data.user_data_allocated = 0;
 		sam_internal_data.user_data_allocated = 0;
 		sam_internal_data.user_data_size = 0;
 		sam_internal_data.user_data_size = 0;
 	} else {
 	} 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 = new_data;
 		sam_internal_data.user_data_size = size;
 		sam_internal_data.user_data_size = size;