[SCSI] gdth: fix overlapping snprintf users

Closes-bug: http://bugzilla.kernel.org/show_bug.cgi?id=13438
Closes-bug: http://bugzilla.kernel.org/show_bug.cgi?id=13437
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
This commit is contained in:
Alan Cox
2009-06-09 13:44:02 +01:00
committed by James Bottomley
parent cf4e636385
commit 238ddbb98c

View File

@@ -152,6 +152,7 @@ static int gdth_get_info(char *buffer,char **start,off_t offset,int length,
struct Scsi_Host *host, gdth_ha_str *ha) struct Scsi_Host *host, gdth_ha_str *ha)
{ {
int size = 0,len = 0; int size = 0,len = 0;
int hlen;
off_t begin = 0,pos = 0; off_t begin = 0,pos = 0;
int id, i, j, k, sec, flag; int id, i, j, k, sec, flag;
int no_mdrv = 0, drv_no, is_mirr; int no_mdrv = 0, drv_no, is_mirr;
@@ -192,11 +193,11 @@ static int gdth_get_info(char *buffer,char **start,off_t offset,int length,
if (reserve_list[0] == 0xff) if (reserve_list[0] == 0xff)
strcpy(hrec, "--"); strcpy(hrec, "--");
else { else {
sprintf(hrec, "%d", reserve_list[0]); hlen = sprintf(hrec, "%d", reserve_list[0]);
for (i = 1; i < MAX_RES_ARGS; i++) { for (i = 1; i < MAX_RES_ARGS; i++) {
if (reserve_list[i] == 0xff) if (reserve_list[i] == 0xff)
break; break;
sprintf(hrec,"%s,%d", hrec, reserve_list[i]); hlen += snprintf(hrec + hlen , 161 - hlen, ",%d", reserve_list[i]);
} }
} }
size = sprintf(buffer+len, size = sprintf(buffer+len,