[SCSI] libfcoe: fix possible buffer overflow in fcoe_transport_show

possible buffer overflow in fcoe_transport_show when reaching the end of
buffer and crossing PAGE_SIZE boundary.

Signed-off-by: Yi Zou <yi.zou@intel.com>
Signed-off-by: Tomas Henzl <thenzl@redhat.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
Yi Zou 2011-04-01 16:06:25 -07:00 committed by James Bottomley
parent 69922fcd53
commit a01a5a5789

View File

@ -385,9 +385,9 @@ static int fcoe_transport_show(char *buffer, const struct kernel_param *kp)
i = j = sprintf(buffer, "Attached FCoE transports:"); i = j = sprintf(buffer, "Attached FCoE transports:");
mutex_lock(&ft_mutex); mutex_lock(&ft_mutex);
list_for_each_entry(ft, &fcoe_transports, list) { list_for_each_entry(ft, &fcoe_transports, list) {
i += snprintf(&buffer[i], IFNAMSIZ, "%s ", ft->name); if (i >= PAGE_SIZE - IFNAMSIZ)
if (i >= PAGE_SIZE)
break; break;
i += snprintf(&buffer[i], IFNAMSIZ, "%s ", ft->name);
} }
mutex_unlock(&ft_mutex); mutex_unlock(&ft_mutex);
if (i == j) if (i == j)