Explorar el Código

votequorum: Prevent leak in qdevice_is_configured

Also LEAVE from function is now properly logged.

Signed-off-by: Jan Friesse <jfriesse@redhat.com>
Reviewed-by: Fabio M. Di Nitto <fdinitto@redhat.com>
Jan Friesse hace 12 años
padre
commit
e094ab2e2c
Se han modificado 1 ficheros con 14 adiciones y 11 borrados
  1. 14 11
      exec/votequorum.c

+ 14 - 11
exec/votequorum.c

@@ -927,25 +927,28 @@ static int votequorum_read_nodelist_configuration(uint32_t *votes,
 static int votequorum_qdevice_is_configured(uint32_t *qdevice_votes)
 static int votequorum_qdevice_is_configured(uint32_t *qdevice_votes)
 {
 {
 	char *qdevice_model = NULL;
 	char *qdevice_model = NULL;
+	int ret = 0;
 
 
 	ENTER();
 	ENTER();
 
 
-	if ((icmap_get_string("quorum.device.model", &qdevice_model) == CS_OK) &&
-	    (strlen(qdevice_model))) {
-		free(qdevice_model);
-		if (icmap_get_uint32("quorum.device.votes", qdevice_votes) != CS_OK) {
-			*qdevice_votes = -1;
-		}
-		if (icmap_get_uint32("quorum.device.timeout", &qdevice_timeout) != CS_OK) {
-			qdevice_timeout = VOTEQUORUM_QDEVICE_DEFAULT_TIMEOUT;
+	if (icmap_get_string("quorum.device.model", &qdevice_model) == CS_OK) {
+		if (strlen(qdevice_model)) {
+			if (icmap_get_uint32("quorum.device.votes", qdevice_votes) != CS_OK) {
+				*qdevice_votes = -1;
+			}
+			if (icmap_get_uint32("quorum.device.timeout", &qdevice_timeout) != CS_OK) {
+				qdevice_timeout = VOTEQUORUM_QDEVICE_DEFAULT_TIMEOUT;
+			}
+			update_qdevice_can_operate(1);
+			ret = 1;
 		}
 		}
-		update_qdevice_can_operate(1);
-		return 1;
+
+		free(qdevice_model);
 	}
 	}
 
 
 	LEAVE();
 	LEAVE();
 
 
-	return 0;
+	return ret;
 }
 }
 
 
 #define VOTEQUORUM_READCONFIG_STARTUP 0
 #define VOTEQUORUM_READCONFIG_STARTUP 0