Просмотр исходного кода

qdevice: mv free(str) after port validation

in the previous code of qdevice_net_instance_init_from_cmap:
   host_port = strtol(str, &ep, 10);

   free(str);

   if (host_port <= 0 || host_port > ((uint16_t)~0) || *ep != '\0')

before free, *ep is '\0'. But after free, *ep changed to 'U', so mv
free behind the comparison.

Signed-off-by: Bin Liu <bliu@suse.com>
Reviewed-by: Jan Friesse <jfriesse@redhat.com>
(cherry picked from commit d624ea4149ca3539f8b6b9965c75f6c25596d964)
Bin Liu 8 лет назад
Родитель
Сommit
ff338873ac
1 измененных файлов с 2 добавлено и 2 удалено
  1. 2 2
      qdevices/qdevice-net-instance.c

+ 2 - 2
qdevices/qdevice-net-instance.c

@@ -274,12 +274,12 @@ qdevice_net_instance_init_from_cmap(struct qdevice_instance *instance)
 	if (cmap_get_string(cmap_handle, "quorum.device.net.port", &str) == CS_OK) {
 		host_port = strtol(str, &ep, 10);
 
-		free(str);
-
 		if (host_port <= 0 || host_port > ((uint16_t)~0) || *ep != '\0') {
 			qdevice_log(LOG_ERR, "quorum.device.net.port must be in range 0-65535");
+			free(str);
 			goto error_free_host_addr;
 		}
+		free(str);
 	} else {
 		host_port = QNETD_DEFAULT_HOST_PORT;
 	}