Re: [PATCH] infiniband-diags: add rdma-ndd daemon

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10/31/14 00:54, ira.weiny@xxxxxxxxx wrote:
+int set_rdma_device_names(const char *hostname)
+{
+	DIR *class_dir;
+	struct dirent *dent;
+
+	class_dir = opendir(SYS_INFINIBAND);
+	if (!class_dir) {
+		syslog(LOG_INFO, "Failed to open %s", SYS_INFINIBAND);
+		return -ENOSYS;
+	}
+
+	while ((dent = readdir(class_dir))) {
+		int retry = set_retry_cnt;
+		if (dent->d_name[0] == '.')
+			continue;
+
+		while (update_node_desc(dent->d_name, hostname) && retry > 0) {
+			syslog(LOG_ERR, "retrying set Node Description on %s\n",
+				dent->d_name);
+			retry--;
+		}
+	}
+
+	return 0;
+}

Has this code been tested with Valgrind and --track-fds=yes and --leak-check=full ? I see an opendir() call in the above code but no closedir().

> +int read_and_set_hostname(int fd)
> +{
> +	int rc;
> +	char buf[128];
> +	if (read(fd, buf, 65) >= 0) {
> +		buf[65] = '\0';
> +		newline_to_null(buf);
> +		strip_domain(buf);
> +		syslog(LOG_INFO, "new hostname detected: %s", buf);
> +		set_rdma_device_names((char *)buf);
> +		rc = 0;
> +	} else {
> +		syslog(LOG_ERR, "Read %s Failed\n", SYS_HOSTNAME);
> +		rc = -EIO;
> +	}
> +	return rc;
> +}

The above code will trigger reading uninitialized data if the data read from fd is not newline-terminated and less than 65 characters are read.

Bart.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux